Javamysql加密算法函数.docx

上传人:b****8 文档编号:28150797 上传时间:2023-07-08 格式:DOCX 页数:30 大小:32.41KB
下载 相关 举报
Javamysql加密算法函数.docx_第1页
第1页 / 共30页
Javamysql加密算法函数.docx_第2页
第2页 / 共30页
Javamysql加密算法函数.docx_第3页
第3页 / 共30页
Javamysql加密算法函数.docx_第4页
第4页 / 共30页
Javamysql加密算法函数.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

Javamysql加密算法函数.docx

《Javamysql加密算法函数.docx》由会员分享,可在线阅读,更多相关《Javamysql加密算法函数.docx(30页珍藏版)》请在冰豆网上搜索。

Javamysql加密算法函数.docx

Javamysql加密算法函数

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。

大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密)。

双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文。

而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧。

具体区分可以参考:

(本人解释不清呢……)

一、双向加密

(一)、对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

需要对加密和解密使用相同密钥的加密算法。

由于其速度,对称性加密通常在消息发送方需要加密大量数据时使用。

对称性加密也称为密钥加密。

所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。

密钥是控制加密及解密过程的指令。

算法是一组规则,规定如何进行加密和解密。

因此对称式加密本身不是安全的。

  

常用的对称加密有:

DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等

对称加密一般java类中中定义成员

Java代码

1//KeyGenerator提供对称密钥生成器的功能,支持各种算法

2privateKeyGeneratorkeygen;

3//SecretKey负责保存对称密钥

4privateSecretKeydeskey;

5//Cipher负责完成加密或解密工作

6privateCipherc;

7//该字节数组负责保存加密的结果

8privatebyte[]cipherByte;

在构造函数中初始化

Java代码

9Security.addProvider(newcom.sun.crypto.provider.SunJCE());

10//实例化支持DES算法的密钥生成器(算法名称命名需按规定,否则抛出异常)

11keygen=KeyGenerator.getInstance("DES");//

12//生成密钥

13deskey=keygen.generateKey();

14//生成Cipher对象,指定其支持的DES算法

15c=Cipher.getInstance("DES");

1.DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。

明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

Java代码

16importjava.security.InvalidKeyException;

17importjava.security.NoSuchAlgorithmException;

18importjava.security.Security;

19

20importjavax.crypto.BadPaddingException;

21importjavax.crypto.Cipher;

22importjavax.crypto.IllegalBlockSizeException;

23importjavax.crypto.KeyGenerator;

24importjavax.crypto.NoSuchPaddingException;

25importjavax.crypto.SecretKey;

26

27publicclassEncrypDES{

28

29//KeyGenerator提供对称密钥生成器的功能,支持各种算法

30privateKeyGeneratorkeygen;

31//SecretKey负责保存对称密钥

32privateSecretKeydeskey;

33//Cipher负责完成加密或解密工作

34privateCipherc;

35//该字节数组负责保存加密的结果

36privatebyte[]cipherByte;

37

38publicEncrypDES()throwsNoSuchAlgorithmException,NoSuchPaddingException{

39Security.addProvider(newcom.sun.crypto.provider.SunJCE());

40//实例化支持DES算法的密钥生成器(算法名称命名需按规定,否则抛出异常)

41keygen=KeyGenerator.getInstance("DES");

42//生成密钥

43deskey=keygen.generateKey();

44//生成Cipher对象,指定其支持的DES算法

45c=Cipher.getInstance("DES");

46}

47

48/**

49*对字符串加密

50*

51*@paramstr

52*@return

53*@throwsInvalidKeyException

54*@throwsIllegalBlockSizeException

55*@throwsBadPaddingException

56*/

57publicbyte[]Encrytor(Stringstr)throwsInvalidKeyException,

58IllegalBlockSizeException,BadPaddingException{

59//根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

60c.init(Cipher.ENCRYPT_MODE,deskey);

61byte[]src=str.getBytes();

62//加密,结果保存进cipherByte

63cipherByte=c.doFinal(src);

64returncipherByte;

65}

66

67/**

68*对字符串解密

69*

70*@parambuff

71*@return

72*@throwsInvalidKeyException

73*@throwsIllegalBlockSizeException

74*@throwsBadPaddingException

75*/

76publicbyte[]Decryptor(byte[]buff)throwsInvalidKeyException,

77IllegalBlockSizeException,BadPaddingException{

78//根据密钥,对Cipher对象进行初始化,DECRYPT_MODE表示加密模式

79c.init(Cipher.DECRYPT_MODE,deskey);

80cipherByte=c.doFinal(buff);

81returncipherByte;

82}

83

84/**

85*@paramargs

86*@throwsNoSuchPaddingException

87*@throwsNoSuchAlgorithmException

88*@throwsBadPaddingException

89*@throwsIllegalBlockSizeException

90*@throwsInvalidKeyException

91*/

92publicstaticvoidmain(String[]args)throwsException{

93EncrypDESde1=newEncrypDES();

94Stringmsg="郭XX-搞笑相声全集";

95byte[]encontent=de1.Encrytor(msg);

96byte[]decontent=de1.Decryptor(encontent);

97System.out.println("明文是:

"+msg);

98System.out.println("加密后:

"+newString(encontent));

99System.out.println("解密后:

"+newString(decontent));

100}

101

102}

2.3DES又称TripleDES,是DES加密算法的一种模式,它使用3条56位的密钥对3DES

数据进行三次加密。

数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSIX.3.92。

DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。

比起最初的DES,3DES更为安全。

  

3DES(即TripleDES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。

它以DES为基本模块,通过组合分组方法设计出分组加密算法,其具体实现如下:

设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,

这样,  

3DES加密过程为:

C=Ek3(Dk2(Ek1(P)))

3DES解密过程为:

P=Dk1((EK2(Dk3(C)))

Java代码

103importjava.security.InvalidKeyException;

104importjava.security.NoSuchAlgorithmException;

105importjava.security.Security;

106

107importjavax.crypto.BadPaddingException;

108importjavax.crypto.Cipher;

109importjavax.crypto.IllegalBlockSizeException;

110importjavax.crypto.KeyGenerator;

111importjavax.crypto.NoSuchPaddingException;

112importjavax.crypto.SecretKey;

113

114publicclassEncrypDES3{

115

116//KeyGenerator提供对称密钥生成器的功能,支持各种算法

117privateKeyGeneratorkeygen;

118//SecretKey负责保存对称密钥

119privateSecretKeydeskey;

120//Cipher负责完成加密或解密工作

121privateCipherc;

122//该字节数组负责保存加密的结果

123privatebyte[]cipherByte;

124

125publicEncrypDES3()throwsNoSuchAlgorithmException,NoSuchPaddingException{

126Security.addProvider(newcom.sun.crypto.provider.SunJCE());

127//实例化支持DES算法的密钥生成器(算法名称命名需按规定,否则抛出异常)

128keygen=KeyGenerator.getInstance("DESede");

129//生成密钥

130deskey=keygen.generateKey();

131//生成Cipher对象,指定其支持的DES算法

132c=Cipher.getInstance("DESede");

133}

134

135/**

136*对字符串加密

137*

138*@paramstr

139*@return

140*@throwsInvalidKeyException

141*@throwsIllegalBlockSizeException

142*@throwsBadPaddingException

143*/

144publicbyte[]Encrytor(Stringstr)throwsInvalidKeyException,

145IllegalBlockSizeException,BadPaddingException{

146//根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

147c.init(Cipher.ENCRYPT_MODE,deskey);

148byte[]src=str.getBytes();

149//加密,结果保存进cipherByte

150cipherByte=c.doFinal(src);

151returncipherByte;

152}

153

154/**

155*对字符串解密

156*

157*@parambuff

158*@return

159*@throwsInvalidKeyException

160*@throwsIllegalBlockSizeException

161*@throwsBadPaddingException

162*/

163publicbyte[]Decryptor(byte[]buff)throwsInvalidKeyException,

164IllegalBlockSizeException,BadPaddingException{

165//根据密钥,对Cipher对象进行初始化,DECRYPT_MODE表示加密模式

166c.init(Cipher.DECRYPT_MODE,deskey);

167cipherByte=c.doFinal(buff);

168returncipherByte;

169}

170

171/**

172*@paramargs

173*@throwsNoSuchPaddingException

174*@throwsNoSuchAlgorithmException

175*@throwsBadPaddingException

176*@throwsIllegalBlockSizeException

177*@throwsInvalidKeyException

178*/

179publicstaticvoidmain(String[]args)throwsException{

180EncrypDES3des=newEncrypDES3();

181Stringmsg="郭XX-搞笑相声全集";

182byte[]encontent=des.Encrytor(msg);

183byte[]decontent=des.Decryptor(encontent);

184System.out.println("明文是:

"+msg);

185System.out.println("加密后:

"+newString(encontent));

186System.out.println("解密后:

"+newString(decontent));

187

188}

189

190}

3.AES密码学中的高级加密标准(AdvancedEncryptionStandard,AES),又称高级加密标准

Rijndael加密法,是美国联邦政府采用的一种区块加密标准。

这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPSPUB197,并在2002年5月26日成为有效的标准。

2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

  该算法为比利时密码学家JoanDaemen和VincentRijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。

(Rijdael的发音近于"Rhinedoll"。

Java代码

191importjava.security.InvalidKeyException;

192importjava.security.NoSuchAlgorithmException;

193importjava.security.Security;

194

195importjavax.crypto.BadPaddingException;

196importjavax.crypto.Cipher;

197importjavax.crypto.IllegalBlockSizeException;

198importjavax.crypto.KeyGenerator;

199importjavax.crypto.NoSuchPaddingException;

200importjavax.crypto.SecretKey;

201

202publicclassEncrypAES{

203

204//KeyGenerator提供对称密钥生成器的功能,支持各种算法

205privateKeyGeneratorkeygen;

206//SecretKey负责保存对称密钥

207privateSecretKeydeskey;

208//Cipher负责完成加密或解密工作

209privateCipherc;

210//该字节数组负责保存加密的结果

211privatebyte[]cipherByte;

212

213publicEncrypAES()throwsNoSuchAlgorithmException,NoSuchPaddingException{

214Security.addProvider(newcom.sun.crypto.provider.SunJCE());

215//实例化支持DES算法的密钥生成器(算法名称命名需按规定,否则抛出异常)

216keygen=KeyGenerator.getInstance("AES");

217//生成密钥

218deskey=keygen.generateKey();

219//生成Cipher对象,指定其支持的DES算法

220c=Cipher.getInstance("AES");

221}

222

223/**

224*对字符串加密

225*

226*@paramstr

227*@return

228*@throwsInvalidKeyException

229*@throwsIllegalBlockSizeException

230*@throwsBadPaddingException

231*/

232publicbyte[]Encrytor(Stringstr)throwsInvalidKeyException,

233IllegalBlockSizeException,BadPaddingException{

234//根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

235c.init(Cipher.ENCRYPT_MODE,deskey);

236byte[]src=str.getBytes();

237//加密,结果保存进cipherByte

238cipherByte=c.doFinal(src);

239returncipherByte;

240}

241

242/**

243*对字符串解密

244*

245*@parambuff

246*@return

247*@throwsInvalidKeyException

248*@throwsIllegalBlockSizeException

249*@throwsBadPaddingException

250*/

251publicbyte[]Decryptor(byte[]buff)throwsInvalidKeyException,

252IllegalBlockSizeException,BadPaddingException{

253//根据密钥,对Cipher对象进行初始化,DECRYPT_MODE表示加密模式

254c.init(Cipher.DECRYPT_MODE,deskey);

255cipherByte=c.doFinal(buff);

256returncipherByte;

257}

258

259/**

260*@paramargs

261*@throwsNoSuchPaddingExceptio

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1