16進またはASCII表現を使用して、コンソールにバイナリハッシュ表現を記録します。アルゴリズムはMD5なので、関数はCC_MD5
Objective-cのHEX/Asciiへのバイナリハッシュ表現
私はTheos tweakでバイナリハッシュ表現を得ていますが、これはうまくいきます。
編集:この調整はCC_MD5
コールを傍受します。呼び出しは、以下に説明するメソッドで実装されます。 CC_MD5
が呼び出されると、replaced_CC_MD5
がコールを代行受信します。
テストアプリ、私は自分自身を作り、MD5ハッシュを計算するために、このメソッドを使用していますシンプルなアプリです:それは大丈夫だ
- (NSString *) md5:(NSString *) input
{
const char *cStr = [input UTF8String];
unsigned char digest[16];
CC_MD5(cStr, strlen(cStr), digest); // This is the md5 call
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
ハッシング、そして私にアプリ戻っ入力のための正しいハッシュ
input = prova
MD5 Digest = 189bbbb00c5f1fb7fba9ad9285f193d1
私はCC_MD5機能が
EDITで操作する私のTHEOS微調整での機能:data
はcStr
、len
はstrlen(cStr)
、md
はdigest
となります。
static unsigned char * replaced_CC_MD5(const void *data, CC_LONG len, unsigned char *md) {
CC_LONG dataLength = (size_t) len;
NSLog(@"==== START CC_MD5 HOOK ====");
// hex of digest
NSData *dataDigest = [NSData dataWithBytes:(const void *)md length:(NSUInteger)CC_MD5_DIGEST_LENGTH];
NSLog(@"%@", dataDigest);
// hex of string
NSData *dataString = [NSData dataWithBytes:(const void *)data length:(NSUInteger)dataLength];
NSLog(@"%@", dataString);
NSLog(@"==== END CC_MD5 HOOK ====");
return original_CC_MD5(data, len, md);
}
dataString
のログそれは大丈夫だ:dataDigest
のログは、私は理解している場合、あるe9aa0800 01000000 b8c00800 01000000
、バイナリハッシュ表現であるprova
のHEX表現がある70726f76 61
を。
この表現をMD5ハッシュダイジェストに変換するにはどうすればよいですか?
'置き換え_CC_MD5' *に' md'を表示していませんか?あなたは 'original_CC_md 'それはその価値を提供していますか? – CRD
正確、多かれ少なかれ:)私は 'md'の**バイナリ**ハッシュ表現を表示していますが、私はこの値の16進数またはASCIIの表現になります。 'original_CC_MD5'それは私のものの後に通常の関数を返すために呼び出されます – strano
あなたが表示している値は' replaced_CC_MD5'に渡された16バイトの* hex *です。あなたの質問には、その値がどこから来るのかを示すものは何もなく、 'CC_MD5'に基づいて' md'が*出力*パラメータであると思われるので、最初のコメントです。しかし、意味のある値を渡している場合は、質問が何であるか、どこから来ているかなどを編集する必要があります。 – CRD