[PYTHON] HMAC en plusieurs langues

Échantillon HMAC SHA-256. J'écrirai plus si j'ai le temps.

Clé secrète clé secrète ・ Signer avec HMAC SHA-256 avec cible Ceci est un stylo .. La sortie sera «b4197908ed255480db6bbedb27426c89520bcd3b79c81006f70a94f415b43a43».

Premier 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");

    }
}

La spécification de l'algorithme est redondante, mais y a-t-il seulement une telle manière d'écrire? Je serais heureux si la sortie hexadécimale de la chaîne d'octets pouvait être rendue un peu plus propre. La bibliothèque encodée en Base64 accepte les chaînes d'octets telles quelles. Dans ce cas, cela peut être bon.

Vient ensuite 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())

Ruby suivant.

#!/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

HMAC en plusieurs langues
[AOJ] Tri décroissant dans différentes langues
Écrire des classes (ou de type classe) dans divers langages de programmation
Représentation numérique des jours dans différentes langues
Représentation de séquences de Fibonacci à l'aide d'expressions lambda dans différentes langues
10 langages de programmation les plus populaires en 2020
Rivaliser pour les E / S de fichiers dans différentes langues et comparer les vitesses
Hello World dans divers langages [Python / PHP / Java / Perl / Ruby]
J'ai implémenté N-Queen dans différentes langues et mesuré la vitesse
Faisons "Hello World" en 40 langues! !!
Divers paramètres Anaconda dans l'environnement Windows 10
Résumé des différentes opérations dans Tensorflow
J'ai créé un programme de sortie de table de nombres premiers dans différentes langues
Parallélisme avec les collections dans les langues populaires
Résumé de diverses instructions for en Python
Écriture de base de divers langages de programmation (auto-mémo)
J'ai écrit un test unitaire pour différentes langues
API RICOH THETA S en plusieurs langues.
Divers commentaires à écrire dans le programme