+ -
当前位置:首页 → 问答吧 → Javascript / php 用RSA去做加密资料传送?

Javascript / php 用RSA去做加密资料传送?

时间:2014-04-27

来源:互联网

大约系由send.html 用session key 加密某一个user input value(password)
然后要RSA方法传去比rec.php

请问大约要点做?
上网睇左好耐都唔知点搅@@

thank you very much!

作者: yoho_town_   发布时间: 2014-04-27

引用:原帖由 yoho_town_ 於 2014-4-13 02:59 AM 发表
大约系由send.html 用session key 加密某一个user input value(password)
然后要RSA方法传去比rec.php

请问大约要点做?
上网睇左好耐都唔知点搅@@

thank you very much!
我都曾经想用正统些的方法搞加密、解密,找过以下资料,可能对你有用:
https://code.google.com/p/crypto-js/
http://www.php.net/manual/en/book.mcrypt.php

不过其实都有 HTTPS ,实际上可能点搞都无意思。
如果想更安全,或者要自行想个新的方法来加密。

作者: xianrenb   发布时间: 2014-04-27

把资料转成byte array
然后计算出两把key...一个用在加密...一个解密

下面的javascript就是用来加密和解密
复制内容到剪贴板代码:function modPow(base, exponent, n)
{
var result = (exponent & 1 ? base % n : 1);
while(exponent >>= 1)
{
base *= base %= n;
result *= (exponent & 1 ? base % n : 1);
result %= n;
}
return result;
}

function RSAEncoder(key, binary)
{
var _base = 4 * Math.LN2;
var _package = [Math.floor(Math.log(key.N) / _base),
Math.ceil(Math.log(key.N) / _base)];
var _end = binary.length % _package[0];

while(binary.length % _package) binary.push(0);

var data = [];
for(var i = 0; i * _package[0] < binary.length; ++i)
{
var temp = 0;
for(var j = 0; j < _package[0]; ++j)
{
temp = temp << 4 | 0xf & binary[i * _package[0] + j];
}

var code = modPow(temp, key.e, key.N);
for(var j = 0; j < _package[1]; ++j)
{
data.push(0xf & code >> 4 * (_package[1] - j - 1));
}
}
data.push(_end);

return data;
}

function RSADecoder(key, binary)
{
var _base = 4 * Math.LN2;
var _package = [Math.ceil(Math.log(key.N) / _base),
Math.floor(Math.log(key.N) / _base)];
var _end = binary.pop();

while(binary.length % _package) binary.push(0);

var data = [];
for(var i = 0; i * _package[0] < binary.length; ++i)
{
var temp = 0;
for(var j = 0; j < _package[0]; ++j)
{
temp = temp << 4 | 0xf & binary[i * _package[0] + j];
}

var code = modPow(temp, key.d, key.N);
for(var j = 0; j < _package[1]; ++j)
{
data.push(0xf & code >> 4 * (_package[1] - j - 1));
}
}

if(_end) return data.slice(0, _end - _package[1]);

return data;
}
test code
复制内容到剪贴板代码:var key1 = {N: 323, e: 245};
var key2 = {N: 323, d: 221};

var encode = RSAEncoder(key1 , [1, 2, 3, 4, 5]);
var decode = RSADecoder(key2 , encode);

作者: Susan﹏汪汪   发布时间: 2014-04-27

引用:原帖由 xianrenb 於 2014-4-13 08:21 AM 发表


我都曾经想用正统些的方法搞加密、解密,找过以下资料,可能对你有用:
https://code.google.com/p/crypto-js/
http://www.php.net/manual/en/book.mcrypt.php

不过其实都有 HTTPS ,实际上可能点搞都无意思 ...
如果唔用 js, php 本身有无 AES

作者: 烟民比食屎9更贱   发布时间: 2014-04-27

同埋点解个 js encry 解唔返既!?
复制内容到剪贴板代码:<html>
<head>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var data;
var key;
var encrypted; //= CryptoJS.AES.encrypt(data , key);
var decrypted; //= CryptoJS.AES.decrypt(encrypted, key);
function encry()
{
data = document.getElementById("data").value;
key = document.getElementById("key").value;
encrypted = CryptoJS.AES.encrypt(data , key);
document.getElementById("div1").innerHTML = encrypted
}
function decry()
{
key = document.getElementById("key").value;
encrypted = document.getElementById("data").value;
decrypted = CryptoJS.AES.decrypt(encrypted, key);
document.getElementById("div1").innerHTML = decrypted
}
</script>
</head>
<body>
data: <textarea type="text" id="data"></textarea>

key:<input type="text" id="key">

<div id="div1"></div>
<button onclick="encry()">encry</button><button onclick="decry()">decry</button>
</body>
<html>

作者: 烟民比食屎9更贱   发布时间: 2014-04-27

引用:原帖由 烟民比食屎9更贱 於 2014-4-14 12:01 AM 发表
如果唔用 js, php 本身有无 AES
我都不知道详细情形。
我自己无正式学过 cryptography ,亦不太清楚不同电脑语言有什么合适的 library 可用。
之前提供的 link ,只是很久前曾经找到的 link /资料,连现在合不合用/够不够新,我都不清楚呢!

不过或许可参考一下 http://hk1.php.net/mcrypt 中的 comment ,及
https://gist.github.com/RiANOl/1077723

作者: xianrenb   发布时间: 2014-04-27

引用:原帖由 烟民比食屎9更贱 於 2014-4-14 02:57 AM 发表
同埋点解个 js encry 解唔返既!?



var data;
var key;
var encrypted; //= CryptoJS.AES.encrypt(data , key);
var decrypted; //= CryptoJS.AES.decrypt(encrypted, key);
function encry()
{
...
原来要这样用的:
http://jsfiddle.net/b3VAj/

作者: xianrenb   发布时间: 2014-04-27

Do you know the concept?
引用:原帖由 yoho_town_ 於 2014-4-13 02:59 发表
大约系由send.html 用session key 加密某一个user input value(password)
然后要RSA方法传去比rec.php

请问大约要点做?
上网睇左好耐都唔知点搅@@

thank you very much!

作者: a8d7e8   发布时间: 2014-04-27

引用:原帖由 xianrenb 於 2014-4-14 12:24 PM 发表


原来要这样用的:
http://jsfiddle.net/b3VAj/
utf16 都系有问题, decode 唔返, utf8 ok!

作者: 烟民比食屎9更贱   发布时间: 2014-04-27

引用:原帖由 烟民比食屎9更贱 於 2014-4-14 09:06 PM 发表
utf16 都系有问题, decode 唔返, utf8 ok!
可能是 bug ,可以 report issue :
https://code.google.com/p/crypto-js/issues/list

以下亦值得看看:
http://stackoverflow.com/questions/8169278/firefox-and-utf-16-encoding

作者: xianrenb   发布时间: 2014-04-27

我做过类似的东西,我是用这个javascript lib. 的:
http://www.ohdave.com/rsa/

我想知你点试UTF-16呢?
用中文字?

作者: 尹巴士顿   发布时间: 2014-04-27

引用:原帖由 尹巴士顿 於 2014-4-15 03:40 PM 发表
我做过类似的东西,我是用这个javascript lib. 的:
http://www.ohdave.com/rsa/

我想知你点试UTF-16呢?
用中文字?
中文字都好似只系UTF8

作者: Susan﹏汪汪   发布时间: 2014-04-27

引用:原帖由 尹巴士顿 於 2014-4-15 03:40 PM 发表
我做过类似的东西,我是用这个javascript lib. 的:
http://www.ohdave.com/rsa/

我想知你点试UTF-16呢?
用中文字?
只要define 左个 encoding 系 UTF16, 无论中/英都系用 16bits. UTF8 就视乎咩字!

作者: 烟民比食屎9更贱   发布时间: 2014-04-27

谢谢大家

想问问其实我可否在填form的html内,用server public key去(javascript)encrypt某一个栏位
然后send左去比另一边的php接左d data去用server private key 去(php) decrypt番果个栏位?

PS: server private key 是hardcore落去

念极都唔知点落手好...
十万个谢谢

作者: yoho_town_   发布时间: 2014-04-27

引用:原帖由 yoho_town_ 於 2014-4-16 07:38 AM 发表
谢谢大家

想问问其实我可否在填form的html内,用server public key去(javascript)encrypt某一个栏位
然后send左去比另一边的php接左d data去用server private key 去(php) decrypt番果个栏位?

PS: server pri ...
真系要找这类方法应该好易 google 到。
可以看看:
https://github.com/digitalbazaar/forge
http://stackoverflow.com/questions/4484246/encrypt-and-decrypt-text-with-rsa-in-php

不过我始终觉得无必要用这类方法,除非无得用 https 。

作者: xianrenb   发布时间: 2014-04-27

引用:原帖由 yoho_town_ 於 2014-4-16 07:38 AM 发表
谢谢大家

想问问其实我可否在填form的html内,用server public key去(javascript)encrypt某一个栏位
然后send左去比另一边的php接左d data去用server private key 去(php) decrypt番果个栏位?

PS: server pri ...
咁你呢边都要 show 条 private key 加密, 俾人睇哂...

作者: 烟民比食屎9更贱   发布时间: 2014-04-27

我主要都系想测试学下野,
比人睇哂冇所谓

作者: yoho_town_   发布时间: 2014-04-27