Prev: GSM Encryption
Next: 26th Chaos Communication Congress: How you can build an eavesdropper for a quantum cryptosystem
From: adacrypt on 31 Dec 2009 07:10 Code point range for Bali in Unicode is 1B00 .. 1B7F. In denary the code-point range is 6912 .. 7039. => There are, (7039 6912) + 1 (incl) elements in the character set for this country Highest code point (in terms of information character representation) = 7039 Lowest code point = 6912. Lowest useful value of N to catch all pairings of (Plaintext + Key) = 7039 +1 = 7040 Minimum useful value that X may take is the value of X that produces a range of just 1 only modulus N. So, 2(X + 6912) (X +7040) = 0 => 1 (NB. 0 => 1 when both ends are inclusive) The lowest value of X (minimum X) is the root of this equation (the value of X that makes it equal to 0). 2X + 13824 X 7040 = 0 X + 6784 = 0 X = - 6784. Suppose a key length of 12500 is needed so as to be able to encrypt messages of that length in one go, Increment X by that number on top of the minimum X (- 6784) + Balinese cipher constants of 7040 and 6912 . Then, Lower bound of N = (-6784 + 7040 + 12500) = 12756 Upper bound = 2 ( -6784 + 12500 + 6912) = 25256 Max Message length = Key length = 25256 12756 = 12500 Any message less than and within the range 1 .. 12500 for N is automatically covered by this same key size of course. Worked Example, Alice is the administrator of an office secure network in New York. She has set the scope of her infrastructure encryption scheme for Balinese at 12500 characters of message length capability. => she wants to be able to send messages this long if needs be. Messages for encryption in any language are presented to her as strings of code points. For Balinese, Starting value of X = 12500 +(-6784) = 5716 Lower Bound of N = = 5716 + 7040 = 12756 Upper Bound of N = 2(5716 + 6912) = 25256 So, the range of N is 12756 25256 inclusive (12756<= N <=25256) Check; 25256 12756 = 12500 (the key length range is ok) The encryption algorithm is, [(PlainText + X) + (Key + X)(Mod N) = a residue (modulo N) Cipher text = residue N Let us say that Alice wants to encrypt the plaintext in Balinese with code point 7000 Let us say also that the instantaneous key she is using is the Balinese code point 6950 Let us say also that the instantaneous modulus N she is using is 19356 (i.e. within the calculated range of N 12756 .. 25256)) Reminder X = 5716, N = 19356 [(7000 + 5716) + (6950 + 5716) (Mod 19356) = 25382 (Mod) 19356 = 6026 cipher text = residue N => 6026 19356 = -13330 In practice this is made positive => cipher text = 13330 ----------------------- The decryption algorithm is, Plaintext (as message text now) = Cipher text + 2N 2X - Key Cipher text = 13330 x (-1) = - 13330 Then, Plaintext (as message text) = - 13330 + (2 x 19356) (2 x 5716) 6950 = 7000 This value is correct and is now decoded back into its character value in Balinese. Comment. There are 128 x 128 x 12500 possible permutations of (Plaintext, Key, Modulus N) as encryption transformations in this Alices crypto scheme in Balinese i.e. a possibility space of 204800000 for whatever that may be worth. (large possibility spaces often mean nothing in cryptography it is not relevant here either). The reader might like to try encrypting a few of your own characters. This is the general drill for all of the Unicode languages. Clearly, when all of these parameters are embedded in a computer program it all becomes very easy once the basic design algorithm is understood. - adacrypt (Bali is an island in the Indonesian Republic).
From: Globemaker on 31 Dec 2009 17:11 On Dec 31, 2:10 am, adacrypt <austin.oby...(a)hotmail.com> wrote: > Code point range for Bali in Unicode is 1B00 .. 1B7F. > > In denary the code-point range is 6912 .. 7039. > > => There are, (7039 6912) + 1 (incl) elements in the character set > for this country > > Highest code point (in terms of information character representation) > = 7039 .. .. .. > The reader might like to try encrypting a few of your own characters. > > This is the general drill for all of the Unicode languages. > > Clearly, when all of these parameters are embedded in a computer > program it all becomes very easy once the basic design algorithm is > understood. - adacrypt Hello adacrypt, Can you post some Balinese plaintext and corresponding cipertext on sci.crypt ? This will demonstrate the practicality and strangeness of the cryptography. I tried to post Greek Unicode ciphertext on sci.crypt, but it came out as numbers. GlobeMaker
From: adacrypt on 1 Jan 2010 05:21 On Dec 31 2009, 10:11 pm, Globemaker <alanfolms...(a)cabanova.com> wrote: > On Dec 31, 2:10 am, adacrypt <austin.oby...(a)hotmail.com> wrote:> Code point range for Bali in Unicode is 1B00 .. 1B7F. > > > In denary the code-point range is 6912 .. 7039. > > > => There are, (7039 6912) + 1 (incl) elements in the character set > > for this country > > > Highest code point (in terms of information character representation) > > = 7039 > > . > . > . > > > The reader might like to try encrypting a few of your own characters. > > > This is the general drill for all of the Unicode languages. > > > Clearly, when all of these parameters are embedded in a computer > > program it all becomes very easy once the basic design algorithm is > > understood. - adacrypt > > Hello adacrypt, > Can you post some Balinese plaintext and corresponding cipertext on > sci.crypt ? > This will demonstrate the practicality and strangeness of the > cryptography. > I tried to post Greek Unicode ciphertext on sci.crypt, but it came out > as numbers. > GlobeMaker Hi, I dont think I could do that - the nearest is to use a Microsoft Windows simulated key board (I'm using Windows) at my end but nothing is guaranteed at the other end - frankly its beyond my ken - that is why I think codepoint presentation may be a solution - it may not be the only solution as far as I can see at present - Wait a minute - it occurs to me that a solution my be possible by using visual basic to encrypt with and then having more generous access to the key board simulating facilitating in microsoft - needs experimenting - a surrogate method of carrying Greek might also be possible - Interesting - A very Happy New Year - adacrypt
From: adacrypt on 1 Jan 2010 05:44 On Dec 31 2009, 10:11 pm, Globemaker <alanfolms...(a)cabanova.com> wrote: > On Dec 31, 2:10 am, adacrypt <austin.oby...(a)hotmail.com> wrote:> Code point range for Bali in Unicode is 1B00 .. 1B7F. > > > In denary the code-point range is 6912 .. 7039. > > > => There are, (7039 6912) + 1 (incl) elements in the character set > > for this country > > > Highest code point (in terms of information character representation) > > = 7039 > > . > . > . > > > The reader might like to try encrypting a few of your own characters. > > > This is the general drill for all of the Unicode languages. > > > Clearly, when all of these parameters are embedded in a computer > > program it all becomes very easy once the basic design algorithm is > > understood. - adacrypt > > Hello adacrypt, > Can you post some Balinese plaintext and corresponding cipertext on > sci.crypt ? > This will demonstrate the practicality and strangeness of the > cryptography. > I tried to post Greek Unicode ciphertext on sci.crypt, but it came out > as numbers. > GlobeMaker Just remembered - all the most recently reviewed programming language compilers come with a full library of Unicode languages pre-installed as enumerated data types that enable the screening of the character sets - I have no experience of doing that yet but it can be done in C+ + and Ada -2005 - in that case if the user is using the mutual data base concept that my cryptography is promoting then the decrypted message would be screened in the parent plaintext language - but again you have to have operatives who can work on it - print and archive it - isn't that supposed to be the purpose of Unicode -i.e. to make it posble to communicate by numbers either as secured or unsecure excahnges of information - anything else is retrogressive ? - adacrypt
From: Globemaker on 1 Jan 2010 16:27
On Jan 1, 12:44 am, adacrypt > Just remembered - all the most recently reviewed programming language > compilers come with a full library of Unicode languages pre-installed Hello adacrypt, I have already studied Unicode, so here is how I take English Unicode in a text file and make a Greek file in .rtf rich text format for Microsoft Wordpad. The program is in the Perl language # baffle_63.pl August 7, 2009 Alan Folmsbee, Kona, Hawaii # .RTF Spec requires decimal Unicode in Wordpad Rich # Text Format, after backslash u # Unicode spec has Greek tables in hex so convert to decimal for .rtf use strict; use warnings; my $paragraph = "C:/import/writings/greek3/english_50.txt"; my $code_out = "C:/import/writings/greek3/greek_63.rtf"; open(ENGLISH, "$paragraph") or die "Can't open $paragraph: $!"; open(GREEK, ">$code_out") or die "Can't open $code_out: $!"; # 26 small letters assigned for Unicode Greek version of English sentence. # The letters c and j are left as in English so the 24 Greek letters have 2 added. my @greek_small_letters = (945, 946, 99, 948, 949, 966, 947, 951, 953, 106, 954, 955, 956, 957, 959, 960, 952, 961, 963, 964, 965, 968, 969, 967, 958, 950); # The RTF header is sent to the file. print GREEK "\{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033\{\\fonttbl \{\\f0\\froman\\fcharset0 Times New Roman\;\}\{\\f1\\fswiss\\fcharset0 Arial\;\}\} \{\\\*\\generator alan Msftedit 5\.41\.15\.1515\;\}\\viewkind4\\uc1\ \pard\\sb100\\sa100\\f0\\fs24"; my $k; my $offset; for ($k=0; $k<26; $k++) { print GREEK "\\"."u".$greek_small_letters[$k].","; } # Next, show capital letters numbered 32 less than small letters for ($k=0; $k<26; $k++) { $offset = $greek_small_letters[$k] - 32; print GREEK "\\"."u".$offset.","; } print GREEK "\\"."line"; my $line; my $size; my @english_sentence; my $letter; my $greek_letter; my $flag_match = 0; while ($line = <ENGLISH>) { print "\n$line"; chomp $line; @english_sentence = split (//,$line); $size = @english_sentence; for ($letter=0; $letter<$size; $letter++) { $flag_match = 0; for ($k=0; $k<26; $k++) { # small letters if ($flag_match !=1) { if (ord($english_sentence[$letter]) == ($k+97)) { $greek_letter = $greek_small_letters[$k]; $flag_match = 1; } else { $greek_letter = ord($english_sentence[$letter]); } } # capital letters if ($flag_match !=1) { if (ord($english_sentence[$letter]) == ($k+65)) { $greek_letter = $greek_small_letters[$k] - 32; $flag_match = 1; } else { $greek_letter = ord($english_sentence[$letter]); } } } # handle newline code, the invisible code used as /line or /par in .rtf if ($letter == ($size-1)) { print GREEK "\\"."u".$greek_letter."\\"."line"; } else { print GREEK "\\"."u".$greek_letter.",";; } } } print "\nThe size of the last sentence was $size characters"; print GREEK "\}"; close (ENGLISH); close (GREEK); exit(); |