【发布时间】:2021-04-09 09:18:51
【问题描述】:
我想在 js 和 vb.net 中加密一个特定的字符串。我希望两者都出现相同的加密字符串。
为此,我使用 AES CBC 加密。 现在我找到了下面的JS代码:
const ENC_KEY = "bf3c199c2470cb477d907b1e0917c17b"; // set random encryption key
const IV = "5183666c72eec9e4"; // set random initialisation vector
在 VB.Net 中:
Dim KEY_128 As Byte() = {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}
Dim IV_128 As Byte() = {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}
问题在于我只有 VB.Net 的代码,其中键为字节,Js 中为字符串。 现在我不知道如何获得与字节相同的密钥作为字符串。有人对此有想法吗?
如果您需要进一步的加密代码:
JS:
var encrypt = ((val) => {
let cipher = crypto.createCipheriv('aes-256-cbc', ENC_KEY, IV);
let encrypted = cipher.update(val, 'utf8', 'base64');
encrypted += cipher.final('base64');
return encrypted;
});
message.channel.send(encrypt(phrase));
VB.Net:
Private Sub btnEncrypt_Click()
Dim sPlainText As String = Me.TextBox1.Text
If Not String.IsNullOrEmpty(sPlainText) Then
Dim memoryStream As MemoryStream = New MemoryStream()
Dim cryptoStream As CryptoStream = New CryptoStream(memoryStream, Me.encryptor, CryptoStreamMode.Write)
cryptoStream.Write(Me.enc.GetBytes(sPlainText), 0, sPlainText.Length)
cryptoStream.FlushFinalBlock()
Me.TextBox1.Text = Convert.ToBase64String(memoryStream.ToArray())
memoryStream.Close()
cryptoStream.Close()
End If
End Sub
【问题讨论】:
标签: javascript vb.net