2 回答

TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊
對上面不詳細(xì)的答案做一個補(bǔ)充。根據(jù)@Fuqiang 的回答,只需UTF-16LE在加密之前將純字符串的編碼傳輸?shù)剑涂梢粤?。所以它看起來像這樣:
....
func convertToUTF16LittleEndianBytes(s string) []byte {
u := utf16.Encode([]rune(s))
b := make([]byte, 2*len(u))
for index, value := range u {
binary.LittleEndian.PutUint16(b[index*2:], value)
}
return b
}
func main() {
const secret = "MYpasswd"
s := convertToUTF16LittleEndianBytes(secret)
enc, err := Encrypt(s)
if err != nil {
log.Fatalf("Encrypt failed: %v", err)
}
...
}
并且解密后,您必須utf-16le在比較或使用它之前對解密的字符串進(jìn)行解碼,不要直接將utf-16le字符轉(zhuǎn)換為字符串string(dec)。
- 2 回答
- 0 關(guān)注
- 393 瀏覽
添加回答
舉報