https://github.com/Gurpartap/AESCrypt-ObjC iが使用IOS AESCryptからのNode.jsで復号化メッセージ
print(AESCrypt.encrypt("Start of messsage this ultra long message about how to AES encrypt in node js, message cryptrd with ios AESCrypt! finish", password: "pass"))
である場合、私は接頭辞が壊れていますIOSのプリント= "DB6bpsjaoOTuBL/tb0KR81zOD9gQTmiRjP6Jk3H6WB06rKA513d3VEVvD7fJ4Ap54JRB + e0Vcj7IRPZeB1iauc71udvsUIt59gdds/AP6 + qGKLjVBRpo9mD3xcHkZRuSBGjEnjjdfn8vpDER7oBg9ArQL6vvdc5bb3FtJ4wUdRI ="
およびAndroidの場合
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(password.getBytes("UTF-8"));
byte[] keyBytes = new byte[32];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
key = new SecretKeySpec(keyBytes, "AES");
spec = getIV();
}
public AlgorithmParameterSpec getIV()
{
byte[] iv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
IvParameterSpec ivParameterSpec;
ivParameterSpec = new IvParameterSpec(iv);
return ivParameterSpec;
}
public String encrypt(String plainText) throws Exception
{
cipher.init(Cipher.ENCRYPT_MODE, key, spec);
byte[] encrypted = cipher.doFinal(plainText.getBytes("UTF-8"));
String encryptedText = new String(Base64.encode(encrypted, Base64.DEFAULT), "UTF-8");
return encryptedText;
}
が、私はNode.jsのサーバーに解読しようとしたとき、私は問題がある - 復号化されたメッセージは、接頭辞
bFQAG_V] UCCCQW
メッセージについて=「bFQAG_V] UCCCQWeこの超長いメッセージをクラッシュしましたAES ノードjsで暗号化、メッセージcryptrdでios AESCrypt!フィニッシュ」
は異なる設定を試してみましたが、何もここで
は私のコードは、コードの多くは、これだけの推測を行うことができ不足しているのNode.js
var crypto = require('crypto');
var iv = new Buffer(16);
var encrypt = function(data, key) {
var decodeKey = crypto.createHash('sha256').update(key, 'utf-8').digest();
var cipher = crypto.createCipheriv('aes-256-cbc', decodeKey, iv);
return cipher.update(data, 'utf8', 'base64') + cipher.final('base64');
};
var decrypt = function(data, key) {
var encodeKey = crypto.createHash('sha256').update(key).digest();
var cipher = crypto.createDecipheriv('AES-256-CBC', encodeKey, iv);
var text = cipher.update(data, 'base64', 'utf8')+ cipher.final('utf8')
return text;
};
var data = 'DB6bpsjaoOTuBL/tb0KR81zOD9gQTmiRjP6Jk3H6WB06rKA513d3VEVvD7fJ4Ap54JRB+e0Vcj7IRPZeB1iauc71udvsUIt59gdds/AP6+qGKLjVBRpo9mD3xcHkZRuSBGjEnjjdfn8vpDER7oBg9ArQL6vvdc5bb3FtJ4wUdRI='
var key = 'pass';
var decipher = decrypt(data, key);
私は2つのアプリケーション(ios android)を持っていますが、このアプリケーション間のメッセージは機能しますが、サーバー上のメッセージを復号化する必要があります。 、もしあなたがアンドロイドコードを見て、ノードj上で同じものが見えるならば、IVの生成は同じように見えます –