iphone - Objective-C 和 Ruby 中的数据编码

标签 iphone objective-c ios ruby nsstring

我正在使用 Parse 开发一个 iOS 应用程序,我需要使用 Ruby 模拟他们的加密流程,用于我正在为其构建的网站和浏览器扩展。

为了生成 AES 的盐,他们在 iOS 应用程序中有以下代码:

NSString *str            =    user.email;
NSData *strData          =    [str dataUsingEncoding: NSUTF8StringEncoding];
NSData *encryptedData    =    [strData AESEncryptWithPassphrase:str]; // using the same key

令我困惑的是 dataUsingEncoding: NSUTF8StringEncoding -- 它显然是用 UTF-8 编码字符串,但是当我在 NSLog 中看到它时,它似乎完全不同。因此,如果 str 是“randomemail@gmail.com”,则在 strData 输出上执行 NSLog:

<72616e64 6f6d656d 61696c40 676d6169 6c2e636f 6d>

现在,我如何在 Ruby 中获得相同的输出?因此,我无法获得正确的盐(“randomemail@gmail.com”.encode(“UTF-8”) 只是按预期返回电子邮件)。我如何在 Ruby 中模拟 dataUsingEncoding 以获得完全相同的盐,我是否遗漏了什么?

谢谢

最佳答案

试试这个:

"randomemail@gmail.com".encode("UTF-8").bytes.to_a.map{ |x| x.to_s(16)}

你会“看到”你想要的。

“randomemail@gmail.com”用UTF-8编码的十六进制表示是

<72616e64 6f6d656d 61696c40 676d6169 6c2e636f 6d>

但 ruby​​ 会向您显示字符串表示形式,即“randomemail@gmail.com”。 他们以不同的方式展示相同的内容。

检查 here获取更多信息。

关于iphone - Objective-C 和 Ruby 中的数据编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967047/

相关文章:

iOS 13 NSAttributedString NSKeyedArchiver.archivedData 丢失属性

ios - 扩展中的向下协议(protocol)一致性

ios - 如何在 IOS 中存储 OptionDialog 选项的自定义属性?

iphone - plists : creating additional settings page doesn't work in iOS 的嵌套设置

iphone - UITableView 和 Core Data 的多对多关系

objective-c - Xcode 多个静态库和重复符号

ios - 将信息从一个 UiView 传递到另一个

iphone - CGLayerCreateWithContext CGContext 泄漏

iphone - iPhone 应用程序的安全性

iphone - MKPinannotation 详细信息披露按钮 - 呈现新 View