Тема: JS: Некорректная расшифровка файла.
Доброго времени суток.
Есть два "hta" модуля, суть работы первого модуля:
в форму вводится пароль
шифруется
записывается в файл
второй модуль:
читает из файла
расшифровывает
сравнивает введенный пароль, и если он правильный запускает программу
Проблема: второй модуль считывает не правильно из файла. Например при шифровании пароля первым модулем получилось такая строка в файле:
https://www.dropbox.com/s/fmjoqen62w6mise/ssss.jpg
при чтении из файла во втором модуле получается следующие:
https://www.dropbox.com/s/6349gu1yvfubfw4/ssss-2.jpg
соответственно расшифровка происходит не правильно и даже правильно введенное значение не проходит проверку.
Если в ручную скопировать значение строки из файла и вставить во второй модуль, то расшифровка получается корректная.
Код первого модуля:
<html>
<head>
<script language="JavaScript">
var winWidth=200;
var winHeight=200;
window.resizeTo(winWidth, winHeight);
var winPosX=screen.width/2-winWidth/2;
var winPosY=screen.height/2-winHeight/2;
window.moveTo(winPosX, winPosY);
</script>
<HTA:APPLICATION
contextMenu="no">
<title>pEnc</title>
</head>
<style type="text/css">
body {background-color:#AFEFE0;}
</style>
<script language="JavaScript">
function blockEnterOrAltF4()
{
if((event.keyCode == 13)||((event.keyCode == 115)&&(event.altKey==true))||(event.keyCode == 32))
{event.returnValue=false;}
}
function Encrypt(theText)
{
output = new String;
Temp = new Array();
Temp2 = new Array();
TextSize = theText.length;
for (i = 0; i < TextSize; i++)
{
rnd = Math.round(Math.random() * 132) + 66;
Temp[i] = theText.charCodeAt(i) + rnd;
Temp2[i] = rnd;
}
for (i = 0; i < TextSize; i++)
{
output += String.fromCharCode(Temp[i], Temp2[i]);
}
return output;
}
function open_file(a)
{
if (document.encform.box1.value.length > 7 && document.encform.box1.value.length < 13)
{
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.createTextFile("psw223.txt",2, true);
tf.Write(a);
tf.Close();
alert("пароль задан успешно.")
self.close();
}
else {alert("Пароль не введен, меньше 8 символов или превышает 12 символов."); self.close();}
}
</script>
<body onkeydown="blockEnterOrAltF4()">
<center>Введите новый пароль.</center>
<form name="encform" onsubmit="return false;">
<center><input type="password" name="box1"></center>
<br>
<center>
<input type="button" value="шифровать" onclick="this.form.box2.value = Encrypt(this.form.box1.value);">
</center>
<br>
<center>
<textarea name="box2" rows=10 cols=25 style="display:none;"></textarea>
</center>
</form>
<form name="err">
<center><input type="button" name="butt" value="OK" onclick="open_file(document.encform.box2.value)", ""></center>
</form>
</body>
</body> Код второго модуля:
<html>
<head>
<script language="JavaScript">
var winWidth=500;
var winHeight=600;
window.resizeTo(winWidth, winHeight);
var winPosX=screen.width/2-winWidth/2;
var winPosY=screen.height/2-winHeight/2;
window.moveTo(winPosX, winPosY);
</script>
<HTA:APPLICATION
contextMenu="no">
<title>pUenc</title>
</head>
<style type="text/css">
body { background-color:#AFEFE0;}
</style>
<script language="JavaScript">
function blockEnterOrAltF4()
{
if((event.keyCode == 13)||((event.keyCode == 115)&&(event.altKey==true))||(event.keyCode == 32))
{event.returnValue=false;}
}
var filepath = "psw223.txt";
var fso = new ActiveXObject("Scripting.FileSystemObject");
var myfile = fso.OpenTextFile(filepath, 1);
function window.onload() // читаем psw223.txt в textarea
{
document.encform.box2.value = myfile.ReadAll();
myfile = fso.OpenTextFile(filepath, 1);
myfile.Close();
}
function unEncrypt(theText)
{
output = new String;
Temp = new Array();
Temp2 = new Array();
TextSize = theText.length;
for (i = 0; i < TextSize; i++) {
Temp[i] = theText.charCodeAt(i);
Temp2[i] = theText.charCodeAt(i + 1);
}
for (i = 0; i < TextSize; i = i+2) {
output += String.fromCharCode(Temp[i] - Temp2[i]);
}
return output;
}
MyObject = new ActiveXObject("WScript.Shell")
function pButton()
{
if (document.fpass.pass_id.value === document.encform1.box3.value)
{MyObject.Run("rcmd.exe"); self.close();}
else{alert("не верный пароль..."); self.close();}
}
</script>
<body onkeydown="blockEnterOrAltF4()">
<center>
<form name="encform">
<textarea name="box2" rows=10 cols=25 style="display:none;"></textarea>
</form>
<form name="encform1" onsubmit="return false;">
<textarea name="box3" rows=10 cols=25 style="display:none;"></textarea>
<input type="button" value="Расшифровать" onclick="this.form.box3.value = unEncrypt(document.encform.box2.value);">
</form>
<form name="fpass">
<center><b>введите текущий пароль</b></center>
<input type="password" id="pass_id" maxlength="12" size="18" />
<input type="button" onclick="pButton()" value="OK" />
</form>
</body>
</html>
</body> Подскажите как сделать правильно.

