MD5は不可逆的な暗号化アルゴリズムであり、復号化することはできません。主にクライアント側でユーザーパスワードを暗号化するために使用されます。元の文字列が何であっても、MD5暗号化文字列は32ビットの16進文字列です。MD5は解読しやすいため、通常、多層暗号化にはソルティング方式を使用します。
MD5暗号化アルゴリズムツールは次のとおりです。
public class MD5Util {
public static String encrypt(String raw) {
String md5Str = raw;
try {
MessageDigest md = MessageDigest.getInstance("MD5"); // 创建一个MD5算法对象
md.update(raw.getBytes()); // 给算法对象加载待加密的原始数据
byte[] encryContext = md.digest(); // 调用digest方法完成哈希计算
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < encryContext.length; offset++) {
i = encryContext[offset];
if (i < 0) {
i += 256;
}
if (i < 16) {
buf.append("0");
}
buf.append(Integer.toHexString(i)); // 把字节数组逐位转换为十六进制数
}
md5Str = buf.toString(); // 拼装加密字符串
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return md5Str.toUpperCase(); // 输出大写的加密串
}
}
多層暗号化アルゴリズムは次のようなものです。暗号化された文字列が文字列aであると仮定します。つまり、文字列x、文字列y、文字列zの3つのソルトがあります。最初に文字列をxでスプライスし、MD5暗号化を実行します。暗号化された文字列にyを追加してから、MD5暗号化を実行します。最後に、2番目の暗号化された文字列でzをスプライスし、もう一度実行します。MD5暗号化。このように、一度解読されても、相手は私たちのx、y、zが何であるかを知らず、3つの値が同時に適用されると、起こり得る状況は幾何学的に増加するので、次数安全性が大幅に向上します。同様に、動的な追加送信の方法を使用できます。x、y、zをバックエンドで提供すると、セキュリティの程度が向上します。この方法は、後述する一部の復号化可能な暗号化アルゴリズムにも使用できます。後で繰り返すことはしません。こちらの内容でお申し込みいただけます。