我是BrightScript的新手,
我想知道如何加密字符串。你能给我举个例子吗?
这是我的代码
esn = m.constants.deviceSerialID如何对结果进行加密?
我做了研究,但我不知道如何使用和放置代码
https://sdkdocs.roku.com/display/sdkdoc/ifEVPCipher
发布于 2019-05-09 17:02:04
使用静态IV (初始化向量)的简单方法:
esn = m.constants.deviceSerialID
Function encrypt(args as Object) as String
iv = "f6a42a2960d374b82d7b333814cbaf8c"
cipher = CreateObject("roEVPCipher")
cipher.setup(true, "aes-256-cbc", args.key, iv, 1)
ba = CreateObject("roByteArray")
ba.FromAsciiString(args.data)
result = cipher.process(ba)
return result.ToBase64String()
End Function
encryptedString = encrypt({
key: "<symmetrical-secret-key>"
data: esn
})IV只是一个随机的十六进制字符串。在本例中,您需要具有相同的IV和密钥才能解密回消息。这里的问题是,静态静脉输液意味着我们比我们本来可以做到的更不安全。为了使这更安全,您可以将IV设置为非静态的。
esn = m.constants.deviceSerialID
Function generateHexString(length As Integer) As String
hexChars = "0123456789abcdef"
hexString = ""
For i = 1 to length
hexString = hexString + hexChars.Mid(Rnd(length / 2) - 1, 1)
End for
Return hexString
End Function
Function encrypt(args as Object) as String
iv = generateHexString(32)
cipher = CreateObject("roEVPCipher")
cipher.setup(true, "aes-256-cbc", args.key, iv, 1)
ba = CreateObject("roByteArray")
ba.FromAsciiString(args.data)
result = cipher.process(ba)
' Append the IV to the front of the message
return iv + result.ToBase64String()
End Function
encryptedString = encrypt({
key: "<symmetrical-secret-key>"
data: esn
})现在,每次加密时,IV都会发生变化,这样就更安全了。当您解密消息时,您知道IV是前32个字符,所以您删除了它,并将其用作IV进行解密。
https://stackoverflow.com/questions/44921974
复制相似问题