4

最近、I2P ソース (Java) で次のフラグメントを見つけました。

private final SessionKey calculateSessionKey(BigInteger myPrivateValue, BigInteger publicPeerValue) {
    SessionKey key = new SessionKey();
    BigInteger exchangedKey = publicPeerValue.modPow(myPrivateValue, CryptoConstants.elgp);
    byte buf[] = exchangedKey.toByteArray();
    byte val[] = new byte[32];
    if (buf.length < val.length) {
        System.arraycopy(buf, 0, val, 0, buf.length);
                    ... //irrelevant details
    } else { // (buf.length >= val.length)
        System.arraycopy(buf, 0, val, 0, val.length);
                   ... //irrelevant details
    }
    key.setData(val);
    return key;
}

私が理解しているように、最初の 256 ビットはbuf[]セッション キーに直接コピーされ、SHA256 ダイジェストは実行されません。私は暗号化の専門家ではありません (Java でもありません)。誰か説明してもらえますか? つまり、標準の Diffie-Hellman wiki ページでは、SHA ハッシュもキーに対して実行されます。もしそうなら、どのように悪用されるか例を挙げていただけますか?

4

2 に答える 2