gpt4 book ai didi

javascript - Java加密和Javascript解密

转载 作者:行者123 更新时间:2023-12-03 11:40:15 24 4
gpt4 key购买 nike

我正在尝试在java中加密数据并在javascript中解密相同的数据。 SO 中已经有类似的问题,但它对我不起作用。

我的问题是 - Java 代码给出的加密文本没有被 Javascript 解密。我在下面的 JS 中硬编码了加密文本和 key 。

附注我知道用户界面上的解密是没有用的,因为 key 将是可见的,并且任何用户都可以解码代码。但我这样做的要求是绕过渗透测试工具。所以请建议如何完成

Java 代码 -

import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class Crypt {
private static final String ALGO = "AES";
private static final byte[] keyValue =
new byte[] { 'A', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k','l', 'm', 'n', 'o', 'p'};

public static String encrypt(String Data) throws Exception {
Key key = generateKey();
String keyForJS = Base64.encodeBase64String(keyValue);
System.out.println("Key2 = " + keyForJS);
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes());
String encryptedValue = Base64.encodeBase64(encVal).toString();
return encryptedValue;
}

private static Key generateKey() throws Exception {
Key key = new SecretKeySpec(keyValue, ALGO);
return key;
}

public static void main(String a[]) throws Exception
{
System.out.println("Encryption = " + Crypt.encrypt("Test"));

}
}

在 eclipse 中执行上述代码会生成以下输出 -

key 2 = [B@670b5064

加密 = [B@3c8b22e5

现在我将在我的 JS 代码中使用这些数据

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/mode-ecb-min.js"></script>

var base64Key = "[B@670b5064"; // This is the output key from Java
var key = CryptoJS.enc.Base64.parse(base64Key);


var decryptedData = CryptoJS.AES.decrypt( "[B@3c8b22e5", key, { // This is the Output text from Java
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
} );
var decryptedText = decryptedData.toString( CryptoJS.enc.Utf8 );
console.log( "decryptedText = " + decryptedText );

JS代码的输出-

decryptedText -(空白,什么也没有出现)。请找到 JS Fiddle - http://jsfiddle.net/achyut/pKNzV/11/

最佳答案

你没有听GregS的意见,所以我会为你做所有的工作:

fiddle 的 HTML:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/mode-ecb-min.js"></script>
<body>
<pre id="output"></pre>
</body>

以及解决问题的 JavaScript,基本上只是 GregS 的注释和输出函数。

function out() {
var args = Array.prototype.slice.call(arguments, 0);
document.getElementById('output').innerHTML += args.join("") + "\n";
}

out("decrypted text: ");
var base64Key = "QWJjZGVmZ2hpamtsbW5vcA==";
var key = CryptoJS.enc.Base64.parse(base64Key);

var decryptedData = CryptoJS.AES.decrypt("lxbdRfoav/6UW/yZtuQM9X1qaI7qZLyuPWgmwPkti/Ayl4CpiPEAMklpaq74BU/U/MxxLgDz4CMs/jm9xzATMFyHOAvObkrnHwydC4PKsej1mqZsgYyQ4qDeKk6on/fdkkLLRMkIFYyBXRTLb/Q1Y85jzbRTOpTG50EjOxMZFlQ=", key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var decryptedText = decryptedData.toString(CryptoJS.enc.Utf8);
out("decryptedText = " + decryptedText);

您可以运行 fiddle here您可以找到有关输出 here 的提示.

关于javascript - Java加密和Javascript解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com