首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密字符串Roku BrightScript

加密字符串Roku BrightScript
EN

Stack Overflow用户
提问于 2017-07-05 17:18:15
回答 1查看 427关注 0票数 2

我是BrightScript的新手,

我想知道如何加密字符串。你能给我举个例子吗?

这是我的代码

代码语言:javascript
复制
  esn = m.constants.deviceSerialID

如何对结果进行加密?

我做了研究,但我不知道如何使用和放置代码

代码语言:javascript
复制
https://sdkdocs.roku.com/display/sdkdoc/ifEVPCipher

EN

回答 1

Stack Overflow用户

发布于 2019-05-09 17:02:04

使用静态IV (初始化向量)的简单方法:

代码语言:javascript
复制
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设置为非静态的。

代码语言:javascript
复制
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进行解密。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44921974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档