idea加密算法c语言程序,IDEA加密算法(含所需jar包(commons-codec-1.11.jar ,bcprov-jdk15on-160.jar))...

1 importjavax.crypto.Cipher;2 importjavax.crypto.KeyGenerator;3 importjavax.crypto.SecretKey;4 importorg.apache.commons.codec.binary.Base64;5 importorg.bouncycastle.jce.provider.BouncyCastleProvider;6

7

8

9 importjavax.crypto.Cipher;10 importjavax.crypto.KeyGenerator;11 importjavax.crypto.SecretKey;12 importjavax.crypto.spec.SecretKeySpec;13 importjava.security.Key;14 importjava.security.Security;15

16

17 public class IDEA implementsalgorithm{18 public voidspeak(String value) {19 String data = "20173599 周博";20 data=value;21 String key =getKey();22 System.out.println("要加密的原文:"+data);23 System.out.println("密钥:" +key);24 String data_en =ideaEncrypt(data, key);25 System.out.println("密文:"+data_en);26 String data_de =ideaDecrypt(data_en, key);27 System.out.println("原文:"+data_de);28 }29

30 public static final String KEY_ALGORITHM="IDEA";31

32 public static final String CIPHER_ALGORITHM="IDEA/ECB/ISO10126Padding";33 public static byte[] initkey() throwsException{34 //加入bouncyCastle支持

35 Security.addProvider(newBouncyCastleProvider());36

37 //实例化密钥生成器

38 KeyGenerator kg=KeyGenerator.getInstance(KEY_ALGORITHM);39 //初始化密钥生成器,IDEA要求密钥长度为128位

40 kg.init(128);41 //生成密钥

42 SecretKey secretKey=kg.generateKey();43 //获取二进制密钥编码形式

44 returnsecretKey.getEncoded();45 }46 /**

47 * 转换密钥48 *@paramkey 二进制密钥49 *@returnKey 密钥50 **/

51 private static Key toKey(byte[] key) throwsException{52 //实例化DES密钥53 //生成密钥

54 SecretKey secretKey=newSecretKeySpec(key,KEY_ALGORITHM);55 returnsecretKey;56 }57

58 /**

59 * 加密数据60 *@paramdata 待加密数据61 *@paramkey 密钥62 *@returnbyte[] 加密后的数据63 **/

64 private static byte[] encrypt(byte[] data,byte[] key) throwsException{65 //加入bouncyCastle支持

66 Security.addProvider(newBouncyCastleProvider());67 //还原密钥

68 Key k=toKey(key);69 //实例化

70 Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);71 //初始化,设置为加密模式

72 cipher.init(Cipher.ENCRYPT_MODE, k);73 //执行操作

74 returncipher.doFinal(data);75 }76 /**

77 * 解密数据78 *@paramdata 待解密数据79 *@paramkey 密钥80 *@returnbyte[] 解密后的数据81 **/

82 private static byte[] decrypt(byte[] data,byte[] key) throwsException{83 //加入bouncyCastle支持

84 Security.addProvider(newBouncyCastleProvider());85 //还原密钥

86 Key k =toKey(key);87 Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);88 //初始化,设置为解密模式

89 cipher.init(Cipher.DECRYPT_MODE, k);90 //执行操作

91 returncipher.doFinal(data);92 }93 public staticString getKey(){94 String result = null;95 try{96 result =Base64.encodeBase64String(initkey());97 } catch(Exception e) {98 e.printStackTrace();99 }100 returnresult;101 }102 public staticString ideaEncrypt(String data, String key) {103 String result = null;104 try{105 byte[] data_en =encrypt(data.getBytes(), Base64.decodeBase64(key));106 result =Base64.encodeBase64String(data_en);107 } catch(Exception e) {108 e.printStackTrace();109 }110 returnresult;111 }112

113 public staticString ideaDecrypt(String data, String key) {114 String result = null;115 try{116 byte[] data_de =decrypt(Base64.decodeBase64(data), Base64.decodeBase64(key));;117 result = newString(data_de);118 } catch(Exception e) {119 e.printStackTrace();120 }121 returnresult;122 }123

124

125

126

127 public static voidmain(String[] args) {128 //TODO Auto-generated method stub

129 System.out.println("IDEA加密算法");130 IDEA idea=newIDEA();131 try

132 {133 idea.speak("20173599 周博");134 }135 catch(Exception e)136 {137 System.out.println(e.getMessage());138 }139 }140

141 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值