HMAC SHA-256 Probe. Ich werde mehr schreiben, wenn ich Zeit habe.
Geheimschlüssel Geheimschlüssel
・ Mit HMAC SHA-256 mit Ziel signieren Dies ist ein Stift.
.
Die Ausgabe lautet "b4197908ed255480db6bbedb27426c89520bcd3b79c81006f70a94f415b43a43".
Erstes Java.
package example.misc;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class HmacDemo {
private static final String SECRET = "secret key";
private static final String TEXT = "This is a pen.";
public static void main(String[] args) throws Exception {
String algo = "HMacSHA256";
final SecretKeySpec keySpec = new SecretKeySpec(SECRET.getBytes(),
algo);
final Mac mac = Mac.getInstance(algo);
mac.init(keySpec);
final byte[] signBytes = mac.doFinal(TEXT.getBytes());
for (byte signByte : signBytes) {
System.out.printf("%02x", signByte & 0xff);
}
System.out.print("\n");
}
}
Die Spezifikation des Algorithmus ist redundant, aber gibt es nur eine solche Schreibweise? Ich würde mich freuen, wenn die hexadezimale Ausgabe der Byte-Zeichenfolge etwas sauberer gestaltet werden könnte. Die Base64-codierte Bibliothek akzeptiert Byte-Zeichenfolgen unverändert. In diesem Fall kann dies sinnvoll sein.
Als nächstes kommt Python
#!/usr/bin/python3
import hashlib
import hmac
SECRET = "secret key"
TEXT = "This is a pen."
print(hmac.new(bytes(SECRET, 'ascii'), bytes(TEXT, 'ascii'), hashlib.sha256).hexdigest())
Nächster Rubin.
#!/usr/bin/ruby
require 'openssl'
SECRET = "secret key"
TEXT = "This is a pen."
puts OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha256'),
SECRET, TEXT).unpack("H*")
Recommended Posts