2016-04-05 13 views
2

Sha256ハッシュ関数は、オブジェクトcのJavaハッシュ関数より長いハッシュ文字列を返します。客観的なC言語で追加された余分なゼロが、どのように私はハッシュを合理化することができますか?Objective CとJavaのSha256ハッシュ

のObjective C:あなたは余分をしたいのに対し、

-(NSString*) sha256:(NSString *)clear{ 
    const char *s=[clear cStringUsingEncoding:NSASCIIStringEncoding]; 
    NSData *keyData=[NSData dataWithBytes:s length:strlen(s)]; 
    uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0}; 
    CC_SHA256(keyData.bytes, keyData.length, digest); 
    NSData *out=[NSData dataWithBytes:digest 
    length:CC_SHA256_DIGEST_LENGTH]; 
    NSString *hash=[out description]; 
    hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
    hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""]; 

    return hash; 
} 

のJava

public static String generateHashString(String data) 
    { 
     try { 
      MessageDigest md = MessageDigest.getInstance("SHA-256"); 
      byte[] dataInBytes = data.getBytes(StandardCharsets.UTF_8); 
      md.update(dataInBytes); 
      byte[] mdbytes = md.digest(); 
      StringBuffer hexString = new StringBuffer(); 
      for (int i=0;i<mdbytes.length;i++) { 
       hexString.append(Integer.toHexString(0xFF & mdbytes[i])); 
      } 

      return hexString.toString(); 

     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

答えて

1

Integer.toHexString()整数には16未満だけ '、1つの文字になります0 '文字です。

あなたはString.Formatの()を使用することができます。

for (int i = 0; i < mdbytes.length; i++) { 
    hexString.append(String.format("%02x", 0xFF & mdbytes[i])); 
} 

を単一のスレッドのみが関与しているためまた、あなたが本当にこのケースでStringBuilderではなくStringBufferを使用する必要があります。

Javaのバイト配列を16進数でエンコードする代替ソリューションについては、Java code To convert byte to Hexadecimalを参照してください。

+0

ありがとう、これは同じハッシュ出力を得るのに役立ちましたが、それを変更するとアンドロイドとWindowsアプリに同じ影響を及ぼすので、私はobjective-cがjava関数として動作する必要があります。 – RonoKim

+0

@RonoKimあなたのご意見は分かりません。 「Java関数として機能するためには、目的が必要です」という意味を説明できますか? –

+0

私はこの変更が客観的に起こることを期待していました。しかし、私はそれが仕事のおかげで作るよ – RonoKim

関連する問題