मैं .net समारोह से उद्देश्य है, जिसमें SHA512 स्ट्रिंग बनाने के लिए समारोह लिखने के लिए कोशिश कर रहा हूँ.net बनाम उद्देश्य सी SHA-512 बेमेल
public static string GetSHA512(string strPlain)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] HashValue = null;
byte[] MessageBytes = UE.GetBytes(strPlain);
System.Security.Cryptography.SHA512Managed SHhash = new System.Security.Cryptography.SHA512Managed();
string strHex = string.Empty;
HashValue = SHhash.ComputeHash(MessageBytes);
foreach (byte b in HashValue)
{
strHex += String.Format("{0:x2}", b);
}
return strHex;
}
इस रूप में
input : pass123
output: 2a6353744cc2914c602265f50d2e413d0561368775756392517abb340ef75d52ee0c5d3623ddd1826fd768a13dca8961f5957c75df0d793b9d7537aabe050705
परिणाम देता है क्या मैं की कोशिश की है का पालन के रूप में है
-(NSString *)createSHA512:(NSString *)string
{
const char *cstr = [string cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:string.length];
uint8_t digest[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA512_DIGEST_LENGTH];
for(int i = 0; i < CC_SHA512_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
जो
नीचे परिणाम देता हैinput : pass123
output: fd37ca5ca8763ae077a5e9740212319591603c42a08a60dcc91d12e7e457b024f6bdfdc10cdc1383e1602ff2092b4bc1bb8cac9306a9965eb352435f5dfe8bb0
क्या कोई सुझाव दे सकता है कि मैं क्या गलत कर रहा हूं?
इन दो मानों में भिन्न क्यों है?
कृपया मेरी गलतियों को सही करें।
संपादित
मतलब जब मैं NSUTF16StringEncoding
और NSUnicodeStringEncoding
जो अभी भी अलग परिणाम के लिए एन्कोडिंग को बदलने की कोशिश की है और के रूप में
input : pass123
output: 514331e3f7ca0a295539347ebccc4e4f095fe5f3c1df10d43b4d550144c7b30ba9507831893ea63ea22e62e993be529b0d14be7800a90aa0de199d6be62a5f1b
अपने त्वरित प्रतिक्रिया के लिए धन्यवाद, लेकिन हम एक मंच है जहाँ हम .net समारोह को बदल नहीं सकते और उद्देश्य सी में compitable समारोह लिखने की ज़रूरत में हैं। –
@ जनकनिर्मल तो बस करें: 'कॉन्स्ट char * cstr = [स्ट्रिंग cStringUsingEncoding: NSUTF16StringEncoding]; ' – NSAddict
@ जनक निर्मल: यह कहने के लायक होगा कि शुरुआत करने के लिए। उस स्थिति में आपको 'NSUTF16StringEncoding' का उपयोग करने के लिए अपना उद्देश्य सी कोड बदलने की आवश्यकता है। –