version 1.4, 2002/03/23 11:27:41
|
version 1.5, 2002/03/23 11:59:22
|
Line 75 function andbit(value,i) {
|
Line 75 function andbit(value,i) {
|
return value&bit[i]; |
return value&bit[i]; |
} |
} |
|
|
|
// General OR function |
|
|
|
function orvalue(a,b) { |
|
return a|b; |
|
} |
|
|
// Function to OR with bit i |
// Function to OR with bit i |
|
|
function orbit(value,i) { |
function orbit(value,i) { |
return value|bit[i]; |
return orvalue(value,bit[i]); |
} |
} |
|
|
// Initialize table arrays and perform self test |
// Initialize table arrays and perform self test |
Line 148 function init() {
|
Line 154 function init() {
|
// C.H. Meyer, S.M. Matyas, John Wiley and Sons, 1982, pg. 160 |
// C.H. Meyer, S.M. Matyas, John Wiley and Sons, 1982, pg. 160 |
|
|
uextkey=0x1234567; |
uextkey=0x1234567; |
lextkey=bit[31]|0x9abcdef; |
lextkey=orbit(0x9abcdef,31); |
ublock=uextkey; |
ublock=uextkey; |
lblock=lextkey; |
lblock=lextkey; |
ip(); |
ip(); |
Line 182 function init() {
|
Line 188 function init() {
|
window.status="Self test ."; |
window.status="Self test ."; |
|
|
// According to NBS 500-20 IP and E test |
// According to NBS 500-20 IP and E test |
ublock=bit[28]|0x66b40b4; |
ublock=orbit(0x66b40b4,28); |
lblock=bit[30]|0xaba4bd6; |
lblock=orbit(0xaba4bd6,30); |
uextkey=0x1010101; |
uextkey=0x1010101; |
lextkey=0x1010101; |
lextkey=0x1010101; |
initkeys(); |
initkeys(); |
Line 199 function init() {
|
Line 205 function init() {
|
// According to NBS 500-20 ptest |
// According to NBS 500-20 ptest |
ublock=0; |
ublock=0; |
lblock=0; |
lblock=0; |
uextkey=bit[28]|0x29116; |
uextkey=orbit(0x29116,28); |
lextkey=bit[31]|bit[28]|0x8100101; |
lextkey=orbit(orbit(0x8100101,28),31); |
initkeys(); |
initkeys(); |
encrypt(); |
encrypt(); |
var st=hexstring(ublock); |
var st=hexstring(ublock); |
Line 212 function init() {
|
Line 218 function init() {
|
window.status="Self test ..."; |
window.status="Self test ..."; |
|
|
// According to NBS 500-20 S-box test |
// According to NBS 500-20 S-box test |
ublock=bit[28]|bit[29]|0x553228; |
ublock=orbit(orbit(0x553228,28),29); |
lblock=bit[29]|bit[30]|0xd6f295a; |
lblock=orbit(orbit(0xd6f295a,29),30); |
var orgu=ublock; |
var orgu=ublock; |
var orgl=lblock; |
var orgl=lblock; |
uextkey=bit[28]|0xc587f1c; |
uextkey=orbit(0xc587f1c,28); |
lextkey=bit[28]|0x3924fef; |
lextkey=orbit(0x3924fef,28); |
initkeys(); |
initkeys(); |
encrypt(); |
encrypt(); |
var st=hexstring(ublock); |
var st=hexstring(ublock); |
Line 395 function stage(si) {
|
Line 401 function stage(si) {
|
for (var kj=0; kj<=3; kj++) { |
for (var kj=0; kj<=3; kj++) { |
if (andbit(uadd,ki-23+kj)!=0) { j=orbit(j,kj); } |
if (andbit(uadd,ki-23+kj)!=0) { j=orbit(j,kj); } |
} |
} |
rv=rv|sbarr[ks*64+i*16+j]; |
rv=orvalue(rv,sbarr[ks*64+i*16+j]); |
ks++; |
ks++; |
} |
} |
for (var ki=18;ki>=0;ki=ki-6) { |
for (var ki=18;ki>=0;ki=ki-6) { |
Line 407 function stage(si) {
|
Line 413 function stage(si) {
|
for (var kj=0; kj<=3; kj++) { |
for (var kj=0; kj<=3; kj++) { |
if (andbit(ladd,ki+1+kj)!=0) { j=orbit(j,kj); } |
if (andbit(ladd,ki+1+kj)!=0) { j=orbit(j,kj); } |
} |
} |
rv=rv|sbarr[ks*64+i*16+j]; |
rv=orvalue(rv,sbarr[ks*64+i*16+j]); |
ks++; |
ks++; |
} |
} |
permute(); |
permute(); |