Java到JavaScript的端口-Secretkeyspec

Java到JavaScript的端口-Secretkeyspec,javascript,java,Javascript,Java,有人能给我一些关于如何将下面的JAVA代码转换成Javascript的线索吗 SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), ALGORITHM); Mac mac = Mac.getInstance(ALGORITHM); mac.init(secretKeySpec); byte[] rawHmac = mac.doFinal(data.getBytes()); BASE64Encoder encod

有人能给我一些关于如何将下面的JAVA代码转换成Javascript的线索吗

SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), ALGORITHM);
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(secretKeySpec);
byte[] rawHmac = mac.doFinal(data.getBytes());
BASE64Encoder encoder = new BASE64Encoder();        
return encoder.encodeBuffer(rawHmac).trim();

不可能将Java代码直接转换为Javascript。如果您正在寻找一个简单的转换器,可以自动将Java逻辑或函数转换为Javascript…那么它并不存在

您可能需要在Javascript中找到合适的库和函数。然后编写新的代码,在Javascript中实现相同的逻辑

话虽如此,它还是一个成熟的javascript库,支持各种加密标准。请参考它并用Javascript编写代码

通过查看Java代码,我相信您正在尝试使用密钥加密一段文本。请查看以下用Javascript编写的代码:

var salt = CryptoJS.lib.WordArray.random(128/8);
var iv = CryptoJS.lib.WordArray.random(128/8);


function  encrypt(){
  console.log('salt  '+ salt );
  console.log('iv  '+ iv );
  var key128Bits = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 128/32 }); 
  console.log( 'key128Bits '+ key128Bits);
  var key128Bits100Iterations = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 128/32, iterations: 100 });
  console.log( 'key128Bits100Iterations '+ key128Bits100Iterations);
  var encrypted = CryptoJS.AES.encrypt("Message", key128Bits100Iterations, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7  });
  console.log('encrypted   '+ encrypted  );
}



function  decrypt(encrypted){
 // var salt = CryptoJS.enc.Hex.parse("4acfedc7dc72a9003a0dd721d7642bde");
 // var iv = CryptoJS.enc.Hex.parse("69135769514102d0eded589ff874cacd");
 // var encrypted = "PU7jfTmkyvD71ZtISKFcUQ==";
  console.log('salt  '+ salt );
  console.log('iv  '+ iv );
  var key = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 128/32, iterations: 100 });
  console.log( 'key '+ key);
  var decrypt = CryptoJS.AES.decrypt(encrypted, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
  var ddd = decrypt.toString(CryptoJS.enc.Utf8); 
  console.log('ddd '+ddd);
} 
!!并在java服务器上运行您必须执行的任何java处理。如果secretKey每次都会更改,则可以通过base64编码传递字节,并在服务器上解码字节。如果js最初只需要使用它,您可以让服务器只输出:

<script>myvalue = "bytes here"'</script>

进入页面供js使用。

您可以研究使用CryptoJS:您不能直接将其转换为JavaScript。你需要在jsHey中找到相关的库或插件!非常感谢你。我实际上使用了Crypto_js来启动并运行它!