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
Alice’s 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).
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
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
> 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();
Hi again,
I'm a bit slow latching on to your drift - are you simply doing a
straight conversion of languages say, as you describe - converting
English to Greek for reproducing in Wordpad (the inference of Word pad
being that there is no help from Microsoft Word ?) but you are using
Perl as the converting medium to do that. Does this mean no
cryptography is involved ? - If this is a piece of research fine but
it seems to me that there are easier ways of doing that - also it
seems to be counter the object of Unicode ?.
I slap my soul on the table here and tell you I am not the best person
to debate this project - my efforts have been all to do with the
cryptography of integers in Unicode as the solution to not knowing any
Cantonese, Mongolian, Arabic or other - even then I zoom in to the
heart of the matter and leave a huge amount of periphereal management
stuff to better informed people - computer scientists, hands-on
cryptographers, programming language specialists in sci crypt and so
on. I admire research tremenduously but if it means swimming aginst
the tide of established methods in the Unicode Consortium then its no
- there can only be curio value to anything I find - I suspect I may
be reading you all wrong.
The point that I am emphasizing in my notes is that a western operator
does not need to know anything more than how to encrypt integers so as
to have secure communications with somebody in any other part of the
world - this will always require an intermediary human being to
provide the interface between the two cultures involved because Alice
brought up in the Bronx knows no CJK (Chinese, Japanese, Korean to
other general readership readers) nor should she either - this is the
essence of Unicode's usefulness - cross-referencing is provided within
Unicode but trying to do this from a private bare board platform is
counter productive ? What say you O' scribe - Cheers - adacrypt