我已经在我的项目中集成了cryptojs,我使用这个函数来加密消息
let encMsg: string = CryptoJS.AES.encrypt(message, aesKey, {iv: aesIv}).toString()
字符串
它正在工作,并在encMsg中返回base64,但它有时返回十六进制值encMsg而不是base64。我不知道为什么会发生这种情况,以及如何控制它只返回base64。
请帮帮我
我已经在我的项目中集成了cryptojs,我使用这个函数来加密消息
let encMsg: string = CryptoJS.AES.encrypt(message, aesKey, {iv: aesIv}).toString()
字符串
它正在工作,并在encMsg中返回base64,但它有时返回十六进制值encMsg而不是base64。我不知道为什么会发生这种情况,以及如何控制它只返回base64。
请帮帮我
1条答案
按热度按时间fzwojiic1#
CryptoJS.AES.encrypt
函数应始终返回封装密文的对象。如果您直接在此对象上调用.toString()
而不指定任何密码编码,则它默认为将此对象转换为字符串的CipherParams
化程序;这可能不总是导致密文的Base64编码。您可以通过在encrypt函数的结果的ciphertext属性上使用
CryptoJS.enc.Base64
对象的.toString()
函数来强制base64输出,如下所示:字符串
因此,
encrypted
是一个CipherParams
对象。它包含几个属性,包括作为WordArray
对象的密文。通过使用CryptoJS.enc.Base64.toString(encrypted.ciphertext)
,您可以将WordArray
对象转换为base64编码的字符串。这应该总是给予你一个表示密文的base64字符串。