Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中创建aes-256加密_Javascript_Php_Encryption_Cryptography - Fatal编程技术网

如何在javascript中创建aes-256加密

如何在javascript中创建aes-256加密,javascript,php,encryption,cryptography,Javascript,Php,Encryption,Cryptography,我有一个PHP脚本,可以为给定字符串创建AES-256-CBF8加密。 我想为javascript中的相同加密创建一个等效代码。 我也使用了CryptoJS。但是我的javascript和php加密代码都不同 我试过这个: PHP: JavaScript: var message = '{"Request":"login","Username":"123456","API_AccessKey":"b57a4d91965d456","GMT_Timestamp":"101439"}'; var

我有一个PHP脚本,可以为给定字符串创建AES-256-CBF8加密。 我想为javascript中的相同加密创建一个等效代码。 我也使用了CryptoJS。但是我的javascript和php加密代码都不同

我试过这个:

PHP:

JavaScript:

var message = '{"Request":"login","Username":"123456","API_AccessKey":"b57a4d91965d456","GMT_Timestamp":"101439"}';

var key = CryptoJS.SHA256("qIthpcluB8xA4Y0CGS7ahl3kfluBay7p"); //length=22
console.log(key);


var iv1  = CryptoJS.SHA256("99FF8B0332880F69D14110316D640AFFA8F422311C1576AF055A00498A88EEE80D337FBB1E4B8081A0901E9A1750806B2B371E7438AB968E4C1C8D3EF05A81ED"); //length=22

var iv = iv1.toString().substring(0,16);


var key1 = key.toString();


console.log(iv);
console.log(key);

//iv.substring(0,16);
//iv is now 987185c4436764b6e27a72f2fffffffd, length=32

var cipherData = CryptoJS.AES.encrypt(message, key1, { iv: iv },{mode: CryptoJS.mode.CFB8});
console.log(cipherData.toString());
//var cipherData="NUUyUDZPVGFLUzVCSUZpRUR3S28vN3dwY2ZLbjVTeDRDc25aTUdmS2pYc3VlTFBFWEpxVFVENmRIV1BCTUdxQXo4UHpOdTlqK2lqcXVNWlBZdTQvTlFlSW5CZnI5UHdiQ1ovNEhCUHU2KytyT3dyOCtrLzBmQT09";


var data = CryptoJS.AES.decrypt(cipherData.toString(), key1, { iv: iv },{mode: CryptoJS.mode.CFB});
console.log(data);

var NewCipher = CryptoJS.enc.Utf8.parse(cipherData);

document.getElementById("demo0").innerHTML = message;
document.getElementById("demo1").innerHTML = CryptoJS.enc.Base64.stringify(NewCipher);
document.getElementById("demo2").innerHTML = data;
//document.getElementById("demo3").innerHTML = CryptoJS.enc.Base64(data.toString(CryptoJS.enc.Utf8));
document.getElementById("demo3").innerHTML = data.toString(CryptoJS.enc.Utf8);

请在这方面帮助我。

您应该依靠后端进行加密,这是更安全的方式。但是,如果您非常关心使用AES256的安全性,那么应该使用SSL,正如在注释中已经说过的那样,因为隧道和其他属性显著提高了例程的安全性

我知道在web的客户端有很多例程,但是使用它们并不好,客户端的缺陷与Scriptography的后端例程相比是远远超过的

出于以下几个原因:

将Javascript安全地交付给浏览器是一个鸡蛋问题

浏览器Javascript不利于加密

Javascript的“查看源代码”透明度是虚幻的

在这些问题得到解决之前,Javascript并不是一个严肃的密码 研究环境,并因此遭受损失

关于SSL解决方案,它已经提供了比您自己的js例程更好的安全性:

你可以。这比听起来难,但你可以安全地传送 使用SSL将Javascript加密到浏览器。问题是 使用SSL建立了安全通道,您不再需要Javascript 密码学;你有“真正的”加密技术。与此同时,Javascript 加密代码仍然受到其他浏览器问题的威胁


不用麻烦,使用SSLcertificate@user2182349我不太喜欢加密,你能解释一下为什么我需要SSL吗?我只想要一种通用的加密方法,它可以用另一种语言开发,JavaScript也都在客户端。所有站点访问者都可以读取和检查加密。当数据从客户端发送到服务器时,使用SSL证书将正确保护数据。加密非常复杂,您应该使用现有的解决方案,而不是编写自己的解决方案。好的,我可以使用JAVA吗?当我用PHP创建API时,我的客户机将是任何其他语言。。所以我只想测试一下,我的加密技术也可以在其他语言上开发如果你只使用对称加密,你需要在服务器和客户端使用完全相同的密钥。如果将加密密钥从服务器发送到客户端,或者以其他方式发送,则需要加密对称加密密钥。最简单的方法是使用TLS。如果您使用TLS,那么数据和密钥都是加密的,所以您不需要自己加密。这并没有提供任何安全性,只是有点模糊。您应该阅读:感谢这些宝贵的信息,但我只是想检查我的php代码是否可以用任何其他语言复制我知道Rajan,但我想展示JS crypto,明白吗?在java中维护你的PHP API的可靠性,好吗?是的,卡洛斯,我很感激你的帮助。我没有注意到,我早就在java中寻找这种方法,考虑使用Spring安全密码模块。
var message = '{"Request":"login","Username":"123456","API_AccessKey":"b57a4d91965d456","GMT_Timestamp":"101439"}';

var key = CryptoJS.SHA256("qIthpcluB8xA4Y0CGS7ahl3kfluBay7p"); //length=22
console.log(key);


var iv1  = CryptoJS.SHA256("99FF8B0332880F69D14110316D640AFFA8F422311C1576AF055A00498A88EEE80D337FBB1E4B8081A0901E9A1750806B2B371E7438AB968E4C1C8D3EF05A81ED"); //length=22

var iv = iv1.toString().substring(0,16);


var key1 = key.toString();


console.log(iv);
console.log(key);

//iv.substring(0,16);
//iv is now 987185c4436764b6e27a72f2fffffffd, length=32

var cipherData = CryptoJS.AES.encrypt(message, key1, { iv: iv },{mode: CryptoJS.mode.CFB8});
console.log(cipherData.toString());
//var cipherData="NUUyUDZPVGFLUzVCSUZpRUR3S28vN3dwY2ZLbjVTeDRDc25aTUdmS2pYc3VlTFBFWEpxVFVENmRIV1BCTUdxQXo4UHpOdTlqK2lqcXVNWlBZdTQvTlFlSW5CZnI5UHdiQ1ovNEhCUHU2KytyT3dyOCtrLzBmQT09";


var data = CryptoJS.AES.decrypt(cipherData.toString(), key1, { iv: iv },{mode: CryptoJS.mode.CFB});
console.log(data);

var NewCipher = CryptoJS.enc.Utf8.parse(cipherData);

document.getElementById("demo0").innerHTML = message;
document.getElementById("demo1").innerHTML = CryptoJS.enc.Base64.stringify(NewCipher);
document.getElementById("demo2").innerHTML = data;
//document.getElementById("demo3").innerHTML = CryptoJS.enc.Base64(data.toString(CryptoJS.enc.Utf8));
document.getElementById("demo3").innerHTML = data.toString(CryptoJS.enc.Utf8);