詳細な暗号化アルゴリズム AES/HmacSHA1/DES

    byte[] raw = sKey.getBytes("utf-8");
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));

このコードは AES 暗号化アルゴリズムを使用しており、具体的な実装方法は AES/ECB/PKCS5Padding です。このうち、AES は対称暗号化アルゴリズム、ECB は動作モード、PKCS5Padding はパディング方式です。

AES アルゴリズム: 一般的に使用される対称暗号化アルゴリズムであり、高いセキュリティと高速な暗号化および復号化速度を備え、データ暗号化の分野で広く使用されています。
ECB モード: 対称暗号化の動作モードであり、暗号化されたデータをブロック単位で処理し、暗号化に同じキーを使用し、データの各ブロックが同じアルゴリズムで処理されます。
PKCS5Padding: ブロック長の要件を満たすように平文データをパディングできるパディング方法です。この埋め込み方法では、元のデータの長さが 1 ブロックに満たない場合、最後に対応するバイト数が埋められます。元のデータ長が 1 ブロックに等しい場合、新しいブロックが追加され、新しいブロック内のすべてのバイトがパディング データになります。
したがって、このコードは AES アルゴリズムを使用して sSrc を暗号化し、sKey は暗号化と復号化に使用されるキーであり、raw は sKey を通じて取得されます。Cipher クラスを使用して暗号化モードを初期化した後、 doFinal() メソッドを呼び出して暗号化プロセスを実装し、暗号化された結果を取得します。

        SecretKeySpec signinKey = new SecretKeySpec(secret.getBytes(), "HmacSHA1");
        Mac mac = Mac.getInstance("HmacSHA1");
        mac.init(signinKey);
        byte[] rawHmac;
        rawHmac = mac.doFinal(content.getBytes(StandardCharsets.UTF_8));

このコードは、ハッシュ関数に基づくメッセージ認証コード (MAC) である HmacSHA1 アルゴリズムを使用します。具体的な実装プロセスは次のとおりです。

SecretKeySpec クラスを使用して、HmacSHA1 アルゴリズムに必要な秘密キーを作成します。秘密は暗号化と復号化に使用されるキーです。
SecretKeySpecsigninKey = new SecretKeySpec(secret.getBytes(), “HmacSHA1”);
Mac クラスを使用して、データ暗号化または検証操作のために MAC オブジェクトを初期化します。ここで、HmacSHA1 アルゴリズムを渡します。
Mac mac = Mac.getInstance(“HmacSHA1”);
init() メソッドを使用して MAC オブジェクトを初期化し、初期化に必要な秘密キーを渡します。
mac.init(signinKey);
getBytes() メソッドを使用して署名するデータのバイト配列を取得し、doFinal() メソッドを通じてデータに署名し、署名された結果を返します。
byte[] rawHmac;
rawHmac = mac.doFinal(content.getBytes(StandardCharsets.UTF_8));
署名操作が完了したら、必要に応じて署名検証やその他の操作を実行できます。
したがって、このコードは、HmacSHA1 アルゴリズムを使用して、指定されたキーとデータに署名 (MAC) するプロセスを完了します。

        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        byte[] dataBytes = data.getBytes();
        SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "DES");
        IvParameterSpec ivspec = new IvParameterSpec(key.getBytes());
        cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
        byte[] encrypted = cipher.doFinal(dataBytes);

これは、CBC パケット モードでの DES アルゴリズムの暗号化実装であり、データ パディングに PKCS5 パディング メソッドを使用します。具体的な手順は次のとおりです。

Cipher クラスを使用して DES 暗号化オブジェクトを作成し、CBC グループ化モードと PKCS5Padding パディング モードを指定します。
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
暗号化する文字列をバイト配列に変換します。
byte[] dataBytes = data.getBytes();
キーを指定し、SecretKeySpec オブジェクトを作成し、Des アルゴリズムを使用します。
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), “DES”);
初期化ベクトルを指定し、IvParameterSpec オブジェクトを作成し、キーと同じ値を渡します。
IvParameterSpec ivspec = new IvParameterSpec(key.getBytes());

おすすめ

転載: blog.csdn.net/zoeou/article/details/129902426