精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java和.NET使用DES對稱加密的區(qū)別

開發(fā) 后端
Java和.NET的系統(tǒng)類庫里都有封裝DES對稱加密的實現(xiàn)方式,但是對外暴露的接口卻各不相同,甚至有時會讓自己難以解決其中的問題,比如Java加密后的結(jié)果在.NET中解密不出來等,由于最近項目有跨Java和.NET的加解密,經(jīng)過我的分析調(diào)試,終于讓它們可以互相加密解密了。

Java和.NET的系統(tǒng)類庫里都有封裝DES對稱加密的實現(xiàn)方式,但是對外暴露的接口卻各不相同,甚至有時會讓自己難以解決其中的問題,比如Java加密后的結(jié)果在.NET中解密不出來等,由于最近項目有跨Java和.NET的加解密,經(jīng)過我的分析調(diào)試,終于讓它們可以互相加密解密了。

DES加密

DES是一種對稱加密(Data Encryption Standard)算法,以前我寫過一篇文章:.NET中加密解密相關(guān)知識,有過簡單描述。

DES算法一般有兩個關(guān)鍵點,第一個是加密算法,第二個是數(shù)據(jù)補(bǔ)位。

加密算法常見的有ECB模式和CBC模式:

ECB模式:電子密本方式,這是JAVA封裝的DES算法的默認(rèn)模式,就是將數(shù)據(jù)按照8個字節(jié)一段進(jìn)行DES加密或解密得到一段8個字節(jié)的密文或者明文,最后一段不足8個字節(jié),則補(bǔ)足8個字節(jié)(注意:這里就涉及到數(shù)據(jù)補(bǔ)位了)進(jìn)行計算,之后按照順序?qū)⒂嬎闼玫臄?shù)據(jù)連在一起即可,各段數(shù)據(jù)之間互不影響。

CBC模式:密文分組鏈接方式,這是.NET封裝的DES算法的默認(rèn)模式,它比較麻煩,加密步驟如下:

1、首先將數(shù)據(jù)按照8個字節(jié)一組進(jìn)行分組得到D1D2......Dn(若數(shù)據(jù)不是8的整數(shù)倍,就涉及到數(shù)據(jù)補(bǔ)位了)

2、第一組數(shù)據(jù)D1與向量I異或后的結(jié)果進(jìn)行DES加密得到第一組密文C1(注意:這里有向量I的說法,ECB模式下沒有使用向量I)

3、第二組數(shù)據(jù)D2與第一組的加密結(jié)果C1異或以后的結(jié)果進(jìn)行DES加密,得到第二組密文C2

4、之后的數(shù)據(jù)以此類推,得到Cn

5、按順序連為C1C2C3......Cn即為加密結(jié)果。

數(shù)據(jù)補(bǔ)位一般有NoPadding和PKCS7Padding(JAVA中是PKCS5Padding)填充方式,PKCS7Padding和PKCS5Padding實際只是協(xié)議不一樣,根據(jù)相關(guān)資料說明:PKCS5Padding明確定義了加密塊是8字節(jié),PKCS7Padding加密快可以是1-255之間。但是封裝的DES算法默認(rèn)都是8字節(jié),所以可以認(rèn)為他們一樣。數(shù)據(jù)補(bǔ)位實際是在數(shù)據(jù)不滿8字節(jié)的倍數(shù),才補(bǔ)充到8字節(jié)的倍數(shù)的填充過程。

NoPadding填充方式:算法本身不填充,比如.NET的padding提供了有None,Zeros方式,分別為不填充和填充0的方式。

PKCS7Padding(PKCS5Padding)填充方式:為.NET和JAVA的默認(rèn)填充方式,對加密數(shù)據(jù)字節(jié)長度對8取余為r,如r大于0,則補(bǔ)8-r個字節(jié),字節(jié)為8-r的值;如果r等于0,則補(bǔ)8個字節(jié)8。比如:

加密字符串為為AAA,則補(bǔ)位為AAA55555;加密字符串為BBBBBB,則補(bǔ)位為BBBBBB22;加密字符串為CCCCCCCC,則補(bǔ)位為CCCCCCCC88888888。

.NET中的DES加密

對于.NET,框架在System.Security.Cryptography命名空間下提供了DESCryptoServiceProvider作為System.Security.Cryptography.DES加密解密的包裝接口,它提供了如下的4個方法:

  1. public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV)  
  2.  
  3. public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[] rgbIV)  
  4.  
  5. public override void GenerateIV()  
  6.  
  7. public override void GenerateKey() 

從.NET類庫封裝情況,加解密需要傳入一個Key和IV向量。而且Key必須為8字節(jié)的數(shù)據(jù),否則會直接拋異常出來,當(dāng)使用ECB模式下,不管傳入什么IV向量,加密結(jié)果都一樣。示例代碼如下:

  1. public static string EncryptWithJava(string key, string str)  
  2. {  
  3.     if (key.Length < 8 || string.IsNullOrEmpty(str))  
  4.     {  
  5.         throw new Exception("加密key小于8或者加密字符串為空!");  
  6.     }  
  7.     byte[] bKey = Encoding.UTF8.GetBytes(key.Substring(08));  
  8.     byte[] bIV = IV;  
  9.     byte[] bStr = Encoding.UTF8.GetBytes(str);  
  10.     try 
  11.     {  
  12.         DESCryptoServiceProvider desc = new DESCryptoServiceProvider();  
  13.         desc.Padding = PaddingMode.PKCS7;//補(bǔ)位  
  14.         desc.Mode = CipherMode.ECB;//CipherMode.CBC  
  15.         using (MemoryStream mStream = new MemoryStream())  
  16.         {  
  17.             using (CryptoStream cStream = new CryptoStream(mStream, desc.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))  
  18.             {  
  19.                 cStream.Write(bStr, 0, bStr.Length);  
  20.                 cStream.FlushFinalBlock();  
  21.                 StringBuilder ret = new StringBuilder();  
  22.                 byte[] res = mStream.ToArray();  
  23.                 foreach (byte b in res)  
  24.                 {  
  25.                     ret.AppendFormat("{0:x2}", b);  
  26.                 }  
  27.                 return ret.ToString();  
  28.             }  
  29.         }  
  30.     }  
  31.     catch 
  32.     {  
  33.         return string.Empty;  
  34.     }  

由于為ECB模式,因此IV這里設(shè)置什么值都是可以的,當(dāng)為CBC模式下,則需要設(shè)置為其他值,比如:public static byte[] IV = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 },才能正常加密解密。

JAVA中的DES加密

JAVA的javax.crypto.Cipher包下,提供了加密解密的功能,它的靜態(tài)getInstance方法,可以返回一個Cipher對象,一般有public static final Cipher getInstance(String transformation)方法,transformation為:algorithm/mode/padding,分別表示算法名稱,比如DES,也可以在后面包含算法模式和填充方式,但也可以只是算法名稱,如為:"DES/CBC/PKCS5Padding","DES"等。JAVA中默認(rèn)的算法為ECB,默認(rèn)填充方式為PKCS5Padding。Cipher的Init方法用來初始化加密對象,常見的有:

  1. public final void init(int opmode, Key key, AlgorithmParameterSpec params)  
  2. public final void init(int opmode,Key key, SecureRandom random) 

用SecureRandom時,一般用于不需要IV的算法模式,示例代碼如下:
 

  1. public static String encrypt2(String src) throws Exception {  
  2.        SecureRandom sr = new SecureRandom();  
  3.        DESKeySpec ks = new DESKeySpec(KEY.getBytes("UTF-8"));  
  4.        SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");  
  5.        SecretKey sk = skf.generateSecret(ks);  
  6.        Cipher cip = Cipher.getInstance("DES/CBC/PKCS5Padding");//Cipher.getInstance("DES");  
  7.        IvParameterSpec iv2 = new IvParameterSpec(IV);  
  8.        cip.init(Cipher.ENCRYPT_MODE, sk, iv2);//IV的方式  
  9.        //cip.init(Cipher.ENCRYPT_MODE, sk, sr);//沒有傳遞IV  
  10.        String dest = byteToHex(cip.doFinal(src.getBytes("UTF-8")));  
  11.        return dest;  
  12.     } 

 當(dāng)默認(rèn)用DES,JAVA會用ECB模式,因此這里IV向量沒有作用,這里,但當(dāng)用CBC模式下,如果還是用SecureRandom,則每次加密的結(jié)果都會不一樣,因為JAVA內(nèi)部會用隨機(jī)的IV來初始化Cipher對象,如示例代碼,由于Cipher.getInstance("DES/CBC/PKCS5Padding")使用了CBC,因此我這里用的javax.crypto.spec.IvParameterSpec包下的IvParameterSpec來初始化向量IV:

  1. Private final static byte[] IV = new byte[] {0x010x010x010x010x010x010x010x01}; 

 

總 結(jié)

對于.NET和JAVA在使用DES對稱加密時,需要大家指定一樣的算法和填充模式,并且JAVA在寫DES加解密算法時,還需要根據(jù)創(chuàng)建Cipher對象的不同,正確使用IV向量。在不同系統(tǒng)需要互相數(shù)據(jù)時,必須要明確的是加密算法,Key和算法模式,再根據(jù)不同模式是否需要IV向量,最后是填充模式。

本文是經(jīng)過自己翻閱資料和反復(fù)調(diào)試代碼而出來的,如有問題,請指正。

原文鏈接:http://www.cnblogs.com/Lawson/archive/2012/05/20/2510781.html

責(zé)任編輯:林師授 來源: Lawson的博客
相關(guān)推薦

2023-07-30 17:44:24

CryptoJS加密字符串

2019-08-02 10:43:57

2023-09-04 14:00:28

加密密鑰私鑰

2023-11-22 16:08:48

2009-08-04 11:08:33

ASP.NET數(shù)據(jù)加密

2009-10-29 13:46:14

VB.NET DES加

2022-06-05 23:30:25

AES加密算法

2020-05-27 10:10:56

對稱加密Hash算法數(shù)字簽名

2024-12-31 08:00:00

SpringBoot開發(fā)加密

2014-07-07 10:04:32

2019-09-11 08:37:16

2019-12-11 16:56:37

HTTPS對稱加密Java

2019-09-23 12:16:02

通信安全加密哈希

2022-10-21 07:33:12

2010-07-28 10:09:01

2023-08-01 07:24:05

2023-12-13 12:27:46

2009-08-13 18:12:11

C#數(shù)據(jù)加密

2009-01-13 10:13:05

Ja.NETJava整合.NET整合

2009-09-04 17:27:46

C# DES
點贊
收藏

51CTO技術(shù)棧公眾號

中文字字幕在线观看| 亚洲成人日韩在线| 亚洲奶水xxxx哺乳期| 豆国产96在线|亚洲| 国外成人在线视频| 强伦人妻一区二区三区| 国产精品伦一区二区| 亚洲乱码中文字幕| 国产一区在线免费| 中文字幕+乱码+中文字幕明步| 婷婷综合视频| 亚洲精品动漫100p| av丝袜天堂网| 手机av在线播放| 久久精品一区二区| 91网站在线免费观看| 国产香蕉视频在线| 婷婷激情图片久久| 国产丝袜精品视频| 日本高清免费在线视频| 国产拍在线视频| 国产精品乱码一区二三区小蝌蚪| 国产精品美女久久久久av福利| aaaaaa毛片| 欧美日韩国产色综合一二三四| 亚洲欧美一区二区三区四区| 成人高清在线观看视频| 天天综合网天天| 亚洲综合色自拍一区| 日本在线视频不卡| 日韩在线观看视频网站| 九九九久久久精品| 青青久久aⅴ北条麻妃| 欧美三级小视频| 欧美肉体xxxx裸体137大胆| 亚洲第一区中文99精品| 天天操精品视频| 国产精品第一| 91黄色免费网站| 精品无码一区二区三区爱欲| 黄色成人影院| 国产喷白浆一区二区三区| 国产九区一区在线| 中文字幕+乱码+中文乱码91| 久久蜜桃资源一区二区老牛| 久久久久久久久久久亚洲| 成人免费毛片xxx| 欧美伦理影院| 亚洲码在线观看| 国产性生活毛片| 一区二区在线免费播放| 555www色欧美视频| 亚洲天堂2018av| 欧美三级精品| 色94色欧美sute亚洲线路一久| 免费看一级大黄情大片| 超碰97国产精品人人cao| 自拍偷拍亚洲欧美日韩| 一区二区三区偷拍| 在线视频91p| 国产精品素人视频| 亚洲日本精品一区| 婷婷成人激情| 国产精品久久久久永久免费观看 | 久久偷看各类wc女厕嘘嘘偷窃| www.蜜臀av.com| 国产麻豆视频精品| 亚洲自拍偷拍第一页| 精品久久久无码中文字幕| 国产一区二区三区黄视频| 亚洲一区亚洲二区| 成人黄色免费视频| 成人一级视频在线观看| 国产精品乱码视频| 香蕉av在线播放| 91在线观看高清| 免费国产在线精品一区二区三区| 男人天堂综合| 中文欧美字幕免费| 艳母动漫在线免费观看| 日本资源在线| 精品久久香蕉国产线看观看亚洲 | 91成人在线观看喷潮蘑菇| 我要色综合中文字幕| 精品久久人人做人人爱| 中文字幕av观看| 久久99国产成人小视频| 中文字幕日韩专区| 亚洲色图综合区| 亚洲精华国产欧美| 国产成人中文字幕| 国产视频一区二区三区四区五区| 国产不卡视频在线观看| 欧美极品一区| 嫩草在线视频| 亚洲va天堂va国产va久| 久久婷婷国产91天堂综合精品| 四虎视频在线精品免费网址| 精品福利一区二区三区免费视频| 色婷婷av777| 91精品国产自产在线观看永久∴| 久久青草福利网站| 天天天天天天天干| 国产宾馆实践打屁股91| 日韩影院一区| 蜜臀av在线| 在线观看国产一区二区| 成人三级做爰av| 蜜桃一区二区三区| 欧美精品免费播放| 久操视频在线免费观看| 国产成人99久久亚洲综合精品| 日本视频一区二区在线观看| 手机电影在线观看| 精品视频一区 二区 三区| 国产女人18毛片水真多18| 99精品美女| 欧美性做爰毛片| 99热这里只有精品1| 97精品视频在线观看自产线路二| 影音先锋亚洲视频| 松下纱荣子在线观看| 欧美欧美欧美欧美首页| 右手影院亚洲欧美| 欧美日韩一卡| 国产色视频一区| 黄视频在线观看免费| 亚洲国产一区二区视频| 天堂在线一区二区三区| 国产精品一在线观看| 羞羞色国产精品| www.桃色av嫩草.com| 国产精品久久久久四虎| 97在线免费公开视频| 盗摄牛牛av影视一区二区| 久久视频这里只有精品| 精品国产www| 国产欧美一区在线| 免费无码国产v片在线观看| 中文字幕区一区二区三| 欧美成人第一页| 一级全黄裸体免费视频| 国产午夜精品一区二区三区嫩草| 日韩欧美一区二| 国产精品黄网站| 欧美日本亚洲视频| www国产在线| 亚洲乱码国产乱码精品精的特点 | 欧美日本一区二区三区四区 | 色妞ww精品视频7777| 日韩在线视频网站| 这里只有精品999| 国产色一区二区| 久久久久免费精品| 亚洲精品蜜桃乱晃| 国产mv久久久| 国产黄在线观看免费观看不卡| 天天影视涩香欲综合网| 波多野结衣先锋影音| 亚洲毛片网站| 久久国产精品精品国产色婷婷| www.综合网.com| 精品久久一区二区三区| 日产亚洲一区二区三区| 99国产精品久久久久久久久久| 霍思燕三级露全乳照| 美女视频亚洲色图| 日韩av男人的天堂| a黄色在线观看| 欧美日韩大陆在线| 日日噜噜夜夜狠狠久久波多野| 国产精品系列在线观看| 国产精品视频一二三四区| 亚洲免费一区三区| 午夜精品一区二区三区在线播放 | 亚洲精品在线视频| 无码人妻aⅴ一区二区三区有奶水 无码免费一区二区三区 | 久久亚洲捆绑美女| 精品久久久久久中文字幕2017| av一区二区高清| 91久久久久久久久| 丁香花在线电影小说观看| 亚洲精品videossex少妇| 成人在线免费看视频| 国产欧美精品一区| 91香蕉国产线在线观看| 亚洲婷婷在线| 日韩高清专区| 99精品视频在线免费播放| 欧美高清视频免费观看| 亚洲 另类 春色 国产| 在线免费亚洲电影| 国产97免费视频| 久久综合网色—综合色88| 午夜两性免费视频| 极品中文字幕一区| 品久久久久久久久久96高清| 99精品女人在线观看免费视频| 性色av一区二区三区在线观看 | www.99久久热国产日韩欧美.com| 99久久精品国产一区色| 狠狠躁夜夜躁人人爽超碰91| 香蕉久久久久久久| www.久久精品| 国产精品嫩草影院8vv8| 国产精品亚洲综合久久| 国产免费色视频| 香蕉人人精品| 91亚洲va在线va天堂va国| 国产在线天堂www网在线观看| 日韩视频在线免费观看| 欧美777四色影视在线 | 污版视频在线观看| 亚洲美女啪啪| 欧美aaa在线观看| 免费精品国产| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 精品一区二区视频在线观看| 精品无人区卡一卡二卡三乱码免费卡| 熟女少妇在线视频播放| 欧美一区二区三区久久精品| 日本不卡在线播放| 国产精品白浆| 亚洲free性xxxx护士白浆| 亚洲成人av观看| 91精品国产色综合久久不卡98口| 大地资源网3页在线观看| 一区二区福利视频| 免费观看成年在线视频网站| 欧美精品一区男女天堂| 国产精品高潮呻吟av| 在线精品视频一区二区三四| 美日韩一二三区| 一区二区三区加勒比av| 国产色无码精品视频国产| 国产欧美日产一区| 成人国产精品久久久网站| 99热精品一区二区| 好吊操视频这里只有精品| 国产综合色精品一区二区三区| 中文字幕在线观看第三页| 国产一区二区三区久久久久久久久| 久久久无码中文字幕久...| 日韩av有码| 久99久在线| 欧美一级二级三级视频| 国产免费一区二区三区| 97久久综合区小说区图片区| 91精品啪aⅴ在线观看国产| 久久精品 人人爱| 国产日韩中文在线| 亚洲三级在线| 亚洲va男人天堂| 成人精品视频在线观看| 91精品久久久久久久| 看片一区二区| 成人免费直播live| 国产精品成人3p一区二区三区| 国产欧美精品日韩| av在线播放一区二区| 7777精品伊久久久大香线蕉语言| 国产高清日韩| 成人自拍爱视频| 久久97精品| 久久久av水蜜桃| 免费观看久久av| 亚洲国产一区二区三区在线| 日韩欧美午夜| 精品一区二区成人免费视频| 亚洲精品成人影院| 欧美国产视频一区| 亚洲黄页一区| 国产主播在线看| 视频一区免费在线观看| 999精彩视频| 国产精品一区二区视频| 男人网站在线观看| 国产色产综合产在线视频| 麻豆一区在线观看| 洋洋av久久久久久久一区| 日产亚洲一区二区三区| 欧美亚洲一区二区三区四区| 中文字幕在线网站| 日韩一区二区三区免费看| 手机看片一区二区| 伊人青青综合网站| 亚洲男同gay网站| 日本成人精品在线| 亚洲色图图片| 精品国产免费人成电影在线观...| 国产精品欧美在线观看| 在线精品亚洲一区二区| 亚洲黄色av| 一区二区三区国产免费| 国产成人av自拍| 免费在线观看a视频| 亚洲一区二区影院| 亚洲色成人www永久网站| 91精品国产综合久久福利软件| 人妻va精品va欧美va| 在线观看国产精品日韩av| 国产精品偷拍| 国产精品视频一区二区高潮| 一区二区三区视频播放| 亚洲电影一二三区| 99成人精品| 在线视频观看一区二区| 91麻豆精品一区二区三区| 综合五月激情网| 一本久久a久久精品亚洲| 亚洲国产成人一区二区| 中文在线不卡视频| 午夜不卡影院| 亚洲字幕在线观看| 成人高清电影网站| 国产av人人夜夜澡人人爽麻豆| 久久超碰97中文字幕| 不卡一区二区在线观看| 亚洲综合网站在线观看| 国产精品污视频| 在线观看日韩欧美| 小视频免费在线观看| 粉嫩av免费一区二区三区| 色一区二区三区四区| 久久久久人妻精品一区三寸| 国产99久久久国产精品潘金| 中文字幕求饶的少妇| 色噜噜狠狠成人中文综合| 熟妇人妻中文av无码| 欧美大片在线影院| 9999在线精品视频| 亚洲欧美日韩精品综合在线观看| 国产欧美亚洲一区| 9.1在线观看免费| 亚洲精品成人在线| 国产精品怡红院| 最新69国产成人精品视频免费| 91精品影视| 日韩国产在线一区| 日韩精品一卡二卡三卡四卡无卡| 一级特级黄色片| 亚洲国产欧美在线| 亚洲精品综合网| 欧美精品日韩三级| 久久综合给合| 亚洲中文字幕无码一区二区三区| 韩国一区二区在线观看| 激情无码人妻又粗又大| 欧美高清hd18日本| 黄网站免费在线观看| 91视频九色网站| 欧美1区视频| 麻豆av免费看| 一区二区三区精品| 国模无码一区二区三区| 97国产在线视频| 欧美日韩一区二区三区在线电影| 日韩欧美不卡在线| 99re在线精品| 天天操天天操天天操天天| 亚洲美女av在线| 欧美aa视频| 婷婷精品国产一区二区三区日韩| 久久综合网络一区二区| 精品无码在线观看| 欧美日韩在线免费视频| 日本电影在线观看网站| 91免费看片网站| 韩日欧美一区| 久久久久国产精品无码免费看| 精品国产老师黑色丝袜高跟鞋| 四虎在线视频| 国产精品白丝jk喷水视频一区| 日本黄色精品| 亚洲在线观看网站| 亚洲国产成人av好男人在线观看| 香港三日本三级少妇66| 国产精品久久久久高潮| 羞羞答答成人影院www| 一区二区三区四区影院| 欧美日韩精品中文字幕| 成年人视频在线免费观看| 91天堂在线观看| 99热这里只有精品8| 女人十八毛片嫩草av| 在线成人av影院| √8天堂资源地址中文在线| 免费看成人片| 黑人巨大精品欧美黑白配亚洲| 日韩精品一区二区在线播放| 亚洲无亚洲人成网站77777| crdy在线观看欧美| 成人免费性视频| 国产日产精品一区| 亚洲伦理在线观看| 国产精品福利网| 狠狠色综合网| www.日本高清视频| 精品国产免费久久 | 天堂v在线观看|