gpt4 book ai didi

ios - 随机唯一字符串生成用作随机数(oauth)

转载 作者:搜寻专家 更新时间:2023-10-30 22:26:38 25 4
gpt4 key购买 nike

我正在尝试使用 UUID 生成随机数以用于 Twitter 反向身份验证。但显然 UUID 不是一个好的选择。那么每次剥离所有非单词字符时如何生成一个唯一的随机字符串,注意它在使用后从内存中释放。以下代码崩溃。

    var uuid: CFUUIDRef = CFUUIDCreate(nil)
var nonce: CFStringRef = CFUUIDCreateString(nil, uuid)
CFRelease(uuid)

println("createdNonce:\(nonce)")

编辑:我在 xcode6 beta2 上,我无法调试,xocde 崩溃,任何机会。好吧,CFRelease 部分对我来说崩溃了。一旦我删除,它似乎工作正常,但我不知道这是否会造成内存泄漏。

至于为什么 UUID 可能不是用于 nonce 的好选择,似乎是因为 UUID 不是由真正的随机位组成,请引用此处的讨论:https://github.com/aws/aws-sdk-ios/issues/30

最佳答案

生成随机数的更正确方法可能是使用加密 RNG 生成随机字节。 iOS恰好有这样的东西:

var s = NSMutableData(length: 32)
SecRandomCopyBytes(kSecRandomDefault, UInt(s.length), UnsafePointer<UInt8>(s.mutableBytes))

// s is now a NSData containing 32 random bytes

然后使用 API 建议的任何格式(可能是 Base64)转换为字符串,例如

let base64str = s.base64EncodedStringWithOptions(0)

编辑:上面的方法似乎是 Twitter 在文档中使用的方法。参见 here .我不能说 UUIDS 是否更容易预测。这取决于它们的生成方法。不过,SecRandomCopyBytes 似乎用于加密目的,因此使用它应该是安全的。

关于ios - 随机唯一字符串生成用作随机数(oauth),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24831597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com