I have some issues with this algorithm, it's TEA. Sometimes it decrypts fine, and others it doesn't. I have tested and tested, and thought hard, but canot seem to see where the problem lies.
The strings, are 32bits, I have escaped, unescaped, all sorts, but nothing makes it work perfect.
So, for example, 8 a's makes it fail, but nine doesn;t.
Or, eight mixed characters, makes it work.
Can someone please tell me what is going on here.
function encrypt(mess,key)
{
while (mess.length%4!=0) {mess+=0;}
arr1=strToLong(mess);
while (key.length<20) {key+=key;}
var keyst=key.substr(0,16);
key1=strToLong(keyst);
delta=0x9E3779B9;
sum=0x00000000;
n=16;
if (arr1.length==0) {return '';}
if (arr1.length==1) {arr1[i++]=0;}
while (n-->0)
{
sum+=delta;
for (var i=0;i<arr1.length-1;i++)
{
arr1+=((arr1[i+1]<<4)+key1[0])^(sum+arr1[i+1])^((arr1[i+1]>>>5)+key1[1]);
arr1[i+1]+=((arr1<<4)+key1[2])^(sum+arr1)^((arr1>>>5)+key1[3]);
}
}
var dum=longToStr(arr1);
document.all.len.value=mess.length;
return dum;
}
function decrypt(mess,key)
{
arr1=strToLong(mess);
while (key.length<20) {key+=key;}
var keyst=key.substr(0,16);
key1=strToLong(keyst);
delta=0x9E3779B9;
sum=delta<<4;
n=16;
if (arr1.length==0) {return '';}
while (n-->0)
{
for (var i=arr1.length-2;i>=0;i--)
{
arr1[i+1]-=(((arr1<<4)+key1[2])^(sum+arr1)^((arr1>>>5)+key1[3]));
arr1-=(((arr1[i+1]<<4)+key1[0])^(sum+arr1[i+1])^((arr1[i+1]>>>5)+key1[1]));
}
sum-=delta;
}
var dum=longToStr(arr1);
if (dum.indexOf('0')>-1) {dum=dum.substr(0,dum.indexOf('0'));}
return dum;
}
The strings, are 32bits, I have escaped, unescaped, all sorts, but nothing makes it work perfect.
So, for example, 8 a's makes it fail, but nine doesn;t.
Or, eight mixed characters, makes it work.
Can someone please tell me what is going on here.
function encrypt(mess,key)
{
while (mess.length%4!=0) {mess+=0;}
arr1=strToLong(mess);
while (key.length<20) {key+=key;}
var keyst=key.substr(0,16);
key1=strToLong(keyst);
delta=0x9E3779B9;
sum=0x00000000;
n=16;
if (arr1.length==0) {return '';}
if (arr1.length==1) {arr1[i++]=0;}
while (n-->0)
{
sum+=delta;
for (var i=0;i<arr1.length-1;i++)
{
arr1+=((arr1[i+1]<<4)+key1[0])^(sum+arr1[i+1])^((arr1[i+1]>>>5)+key1[1]);
arr1[i+1]+=((arr1<<4)+key1[2])^(sum+arr1)^((arr1>>>5)+key1[3]);
}
}
var dum=longToStr(arr1);
document.all.len.value=mess.length;
return dum;
}
function decrypt(mess,key)
{
arr1=strToLong(mess);
while (key.length<20) {key+=key;}
var keyst=key.substr(0,16);
key1=strToLong(keyst);
delta=0x9E3779B9;
sum=delta<<4;
n=16;
if (arr1.length==0) {return '';}
while (n-->0)
{
for (var i=arr1.length-2;i>=0;i--)
{
arr1[i+1]-=(((arr1<<4)+key1[2])^(sum+arr1)^((arr1>>>5)+key1[3]));
arr1-=(((arr1[i+1]<<4)+key1[0])^(sum+arr1[i+1])^((arr1[i+1]>>>5)+key1[1]));
}
sum-=delta;
}
var dum=longToStr(arr1);
if (dum.indexOf('0')>-1) {dum=dum.substr(0,dum.indexOf('0'));}
return dum;
}