Javaの簡単な実現DESの暗号化と復号化アルゴリズム

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/liu_Yudong/article/details/88966515

Javaの簡単な実現DESの暗号化と復号化アルゴリズム

DESアルゴリズムが導入します

12月の暗号化アルゴリズムは、対称暗号化、すなわち、指定されたキーを使用して、パスワードの長さに応じて得られたデータは、データをブロックに分割し、キー複雑な演算やデータ処理動作をシフトされ、パスワードは、特定のソリューションすることができるようにしますオープンデータ。暗号化および復号化鍵、すなわち暗号化鍵が復号化キーと等しい、暗号化鍵と復号鍵が相互に推定することができ、同じです。

関連するクラスのJavaの実装

1.Key:キーのJavaクラスは、すべての親クラスの暗号化されて
2.SecureRandomを:セキュリティポリシーグループを指定
3.KeyGeneratorを:生成アルゴリズムは、オブジェクト
4.BASE64EncoderとBASE64Decoderを:base64でビット変換との完全なバイト列で
5.Cipher:これは、クラスに焦点を当て
  たJava / Androidのは、あなたがこのクラスのCipherを使用する必要があり、任意の暗号化を使用する
  暗号暗号= Cipher.getInstance(「アルゴリズム名」)
  Cipher.ENCRYPT_MODE; cipher.init(暗号化/復号化モード、キー秒)、Cipher.DECRYPT_MODEの復号化を暗号化は、
  すなわち:暗号化:cipher.init(キーCipher.ENCRYPT_MODE);解読:cipher.init(キーCipher.DECRYPT_MODE)、
  データを暗号化または復号化するための単一工程の方法を完了するために、)(のdoFinalを呼び出し、データの複数のセットであれば、必要使用アップデータ()。

コードの実装

import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
//去除警告
@SuppressWarnings("restriction")
public class DESUtil {
	private static Key key;
	//设置密钥key
	private static String KEY_STR = "myKey";
	private static String CHARSETNAME = "UTF-8";
	private static String ALGORITHM = "DES";
	static {
		try {
			//生成DES算法对象
			KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);
			//运用SHA1安全策略
			SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
			//设置密钥种子
			secureRandom.setSeed(KEY_STR.getBytes());
			//初始化基于SHA1的算法对象
			generator.init(secureRandom);
			//生成密钥对象
			key = generator.generateKey();
			generator = null;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	//加密函数
	public static String getEncryptString(String str) {
		BASE64Encoder base64encoder = new BASE64Encoder();
		try {
			//按utf-8编码
			byte[] bytes = str.getBytes(CHARSETNAME);
			//获取加密对象
			Cipher cipher = Cipher.getInstance(ALGORITHM);
			//初始化加密信息
			cipher.init(Cipher.ENCRYPT_MODE, key);
			//加密
			byte[] doFinal = cipher.doFinal(bytes);
			//byte to encode好的String返回
			return base64encoder.encode(doFinal);
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}
	}
	//解密函数
	public static String getDecryptString(String str) {
		//接受byte[]并转换成String
		BASE64Decoder base64decoder = new BASE64Decoder();
		try {
			//将String变成byte
			byte[] bytes = base64decoder.decodeBuffer(str);
			//获取解密对象
			Cipher cipher = Cipher.getInstance(ALGORITHM);
			//初始化解密信息
			cipher.init(Cipher.DECRYPT_MODE, key);
			//解密
			byte[] doFinal = cipher.doFinal(bytes);
			//返回解密信息
			return new String(doFinal, CHARSETNAME);
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}
	}
	//测试
	public static void main(String[] args) {
		System.out.println(getEncryptString("root"));
//		System.out.println(getDecryptString("WnplV/ietfQ="));
	}
}

おすすめ

転載: blog.csdn.net/liu_Yudong/article/details/88966515