小编Use*_*NYC的帖子

Obj-C MD5哈希不匹配Java/SQL

我正在尝试使用unicode字符串,将其传递给MD5哈希函数,并将结果编码为Base64.我需要MSSQL,Java和Obj-C才能返回相同的结果.我有MSSQL和Java同意,但我无法使用Obj-C获得相同的结果.

Java代码(返回"SC0RfYWqWLK/YNpIDdGi8w ==")

String input = "chinese lorem ipsum ????????????";
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] inputBytes = input.getBytes("UTF-16LE");
md.update(input.getBytes("UTF-16LE"));
byte[] enc = md.digest();
String md5Sum = new sun.misc.BASE64Encoder().encode(enc);
System.out.println(md5Sum);
Run Code Online (Sandbox Code Playgroud)

MSSQL代码(返回"SC0RfYWqWLK/YNpIDdGi8w ==")

DECLARE @Str nvarchar(200)
SET @Str = N'chinese lorem ipsum ????????????'
DECLARE @Bin varbinary(max)
SET @Bin = HashBytes('MD5', @Str);
DECLARE @Hash char(24)
SET @Hash = CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@Bin"))', 'NVARCHAR(MAX)')
PRINT @Hash
Run Code Online (Sandbox Code Playgroud)

Obj-C代码(返回"vZRPxuE84whftlx697i/Ig ==")

NSString *input = @"chinese lorem ipsum ????????????";
NSData *data = [input dataUsingEncoding:NSUnicodeStringEncoding allowLossyConversion:NO];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(data.bytes, …
Run Code Online (Sandbox Code Playgroud)

hash cocoa md5 objective-c character-encoding

8
推荐指数
1
解决办法
1947
查看次数

标签 统计

character-encoding ×1

cocoa ×1

hash ×1

md5 ×1

objective-c ×1