【发布时间】:2014-05-08 10:01:17
【问题描述】:
您必须通过发送用户名和密码的网络服务进行登录。 问题是服务器想要一个奇怪的 MD5 格式的密码,我无法生成。
示例
NSString password = @".";
NSString md5 = @"5058f1af8388633f609cadb75a75dc9d";
服务器 MD5 为 "PXñ¯ƒˆc?`œ·ZuÜ"。
我需要把5058f1af8388633f609cadb75a75dc9d转化成"PXñ¯ƒ^c?`œ·ZuÜ",但是我没有办法。
编辑
我发现结果是 5058f1af8388633f609cadb75a75dc9d 字符串的哈希值。这是服务器上的.NET 代码:
byte[] passwordBytesEnc = UTF8Encoding.Default.GetBytes(".");
byte[] passwordBytesHash = MD5.Create().ComputeHash(passwordBytesEnc);
string passwordCriptata = UTF8Encoding.Default.GetString(passwordBytesHash);
【问题讨论】:
-
尝试将 MD5 哈希存储为 UTF8 字符串是任何人所能做的最伤脑筋的事情。除此之外,显然不涉及任何盐,这是犯罪不安全的。我想请你告诉我们这是哪家公司,这样我们就可以避开它们。
-
而不是猜测,您可以使用您的大脑,查看 ñ 是哪个代码,以及它与 md5 字符串的关系。这肯定是比猜测更好的方法。
标签: ios objective-c cocoa-touch nsstring