第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Javascript 中加密并在 Java 中解密 Zip 文件

在 Javascript 中加密并在 Java 中解密 Zip 文件

GCT1015 2022-12-28 11:04:36
我想用javascript加密本地zip文件,然后用java解密。我使用了此鏈接中的代碼https://www.devglan.com/corejava/aes-encryption-javascript-and-decryption-in-java在javascript中加密var AesUtil = function (keySize, iterationCount) {    this.keySize = keySize / 32;    this.iterationCount = iterationCount;};AesUtil.prototype.generateKey = function (salt, passPhrase) {    var key = CryptoJS.PBKDF2(        passPhrase,        CryptoJS.enc.Hex.parse(salt),        {keySize: this.keySize, iterations: this.iterationCount});    return key;};AesUtil.prototype.encrypt = function (salt, iv, passPhrase, plainText) {    var key = this.generateKey(salt, passPhrase);    var encrypted = CryptoJS.AES.encrypt(        plainText,        key,        {iv: CryptoJS.enc.Hex.parse(iv)});    return encrypted.ciphertext.toString(CryptoJS.enc.Base64);};AesUtil.prototype.decrypt = function (salt, iv, passPhrase, cipherText) {    var key = this.generateKey(salt, passPhrase);    var cipherParams = CryptoJS.lib.CipherParams.create({        ciphertext: CryptoJS.enc.Base64.parse(cipherText)    });    var decrypted = CryptoJS.AES.decrypt(        cipherParams,        key,        {iv: CryptoJS.enc.Hex.parse(iv)});    return decrypted.toString(CryptoJS.enc.Utf8);};var CryptoJS = require('crypto-js'),    fs = require('fs');var data = fs.readFileSync("C:\\<my_path>\\scripts.zip");var passPhrase = "123456789123456789";var iv = "a145525c53eafb0258999612b13d9d3e"; //CryptoJS.lib.WordArray.random(128 / 8).toString(CryptoJS.enc.Hex);var salt = "ca70e17a698096cfb42047926713dd62";// CryptoJS.lib.WordArray.random(128 / 8).toString(CryptoJS.enc.Hex);var aesUtil = new AesUtil(128, 1000);var ciphertext = aesUtil.encrypt(salt, iv, passPhrase, data.toString());fs.writeFileSync('C:/Output.encrypted', ciphertext);
查看完整描述

1 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

在大多數(shù)語(yǔ)言中,將 Zip 文件之類的二進(jìn)制內(nèi)容視為字符串通常是一個(gè)大錯(cuò)誤。在 Javascript 方面,CryptoJS 期望提供任意字節(jié)序列作為CryptoJS.lib.WordArray參數(shù)。


所以,而不是


var ciphertext = aesUtil.encrypt(salt, iv, passPhrase, data.toString());

你應(yīng)該有


var ciphertext = aesUtil.encrypt(salt, iv, passPhrase, CryptoJS.lib.WordArray.create(data));

在 Java 端,將函數(shù) decrypt 更改為返回一個(gè)byte[].


public byte[] decrypt(String salt, String iv, String passphrase, String ciphertext) {

    SecretKey key = generateKey(salt, passphrase);

    byte[] decrypted = doFinal(Cipher.DECRYPT_MODE, key, iv, base64(ciphertext));

    return decrypted;

}

在 中main,將代碼更改為類似于


String fileString = new String(Files.readAllBytes(Paths.get(encryptedPath)));

byte [] decryptedText = aesUtil.decrypt(salt, iv, keyString, fileString);

Files.write(Paths.get(decryptedPath), decryptedText);


查看完整回答
反對(duì) 回復(fù) 2022-12-28
  • 1 回答
  • 0 關(guān)注
  • 254 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)