DES加密的詳解
好久沒有動手寫部落格了,來了深圳工作壓力確實大,有時候想寫點自己的東西,但是每天回來的好晚時不時的通宵,專案趕的非常急,真是從一個坑跳到另外一個坑。。。。。今天自己整理了一下關於資料解密的東西,根據網上一些人的部落格,自己實踐了一下這個加密演算法,但是中間還是遇到了坑。。。。。有些人寫的複雜,現在將其整理如下:
public class StringEncryption{
// 加密祕鑰
private static string EncryptDES = {0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};
// entryptString 為要加密的字串
// entryptKey 祕鑰
public static string EncryptDES (String encryptString, String encryptKey)
{
try{
// 擷取前八位為祕鑰
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.SubString(0,8));
byte[] rgbIV = keys;
// 將輸入的要加密字串轉化為位元組流
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
// 建立加密轉換器
DESCryptoServiceProvider dcsp = new DESCryptoServiceProvider();
// 建立記憶體流物件
MemoryStream mStream = new MemoryStream();
// 建立加密流物件
CryptoStrem cStream = new CryptStream(mSteam, dcsp.CreateEncrotor(rgbKey, rgbIV), CryptoStremModel.Write);
// 將位元組流寫入加密流物件
cStream.Write(inputByteArray, 0, inputByteArray.Length);
// 將資料壓入基礎流,用緩衝區的當前狀態更新基礎資料來源或儲存庫,隨後清除緩衝區。
cStream.FlushFinalBlock();
// 關閉加密流物件
cStream.Close();
// 關閉記憶體流物件
mStream.Close();
return Convert.ToBase64String(mStream.ToArray());
}
catch{
return encryptString;
}
}
public static string DecryptDES(String descrypString, String descryptKey)
{
try{
// 將祕鑰轉化為位元組
byte[] rgbKeys = Encoding.UTF8.GetBytes(descryptKey);
byte[] keyIV = keys;
// 將密文轉換為位元組
byte[] inputByteArray = Encoding.UTF8.GetBytes(descrypString);
// 建立加密轉換器
DESCryptoServiceProvider dcsp = new DESCryptoServiceProvider();
// 方法一 通過對解密流物件進行讀操作將解密後的資料讀取出來
// 建立記憶體流物件 並將密文傳給它
MemoryStream mStream = new MemoryStream(inputByteArray);
// 建立解密流物件
CryptStream cStream = new CryptStream( mStream, dcsp.CreateDecrotor(rgbKeys,rgbIV), CryptoStremModel.Read);
//重新宣告一個位元組陣列用來存放解密後的資料
byte[] finalBytes = new byte[cStream.ToArray().Length];
// 重解密流物件中 從位置為0開始讀取長度為 cStream.ToArray().Length 的密文 ,並放入finalBytes陣列
cStream.Read(finalBytes, 0, cStream.ToArray().Length);
// 方法二 通過寫的方式,向解密流物件中寫入要解密的資料,再直接從記憶體流中將解密後的值取出來
/*
// 建立記憶體流物件 並將密文傳給它
MemoryStream mStream = new MemoryStream();
// 建立解密流物件
CryptStream cStream = new CryptStream( mStream, dcsp.CreateDecrotor(rgbKeys,rgbIV), CryptoStremModel.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
用了網上一些人的方法直接返回 cStream.ToArray(), 返回的物件是亂碼。這是錯誤的!!!!
因為資料是放在記憶體流中的,要從記憶體流中將其取出來或者呼叫 cStream.Read()d的方法將資料從解密流物件中讀取出來放入宣告的陣列(如上所示)
*/
return Encoding.UTF8.GetString(finalBytes);
}
catch
{
return descrypString
}
}
}
若有補充的,歡迎交流!!!!
相關推薦
Go語言中操作DES加密詳解
| 今天來講解一下加密函式中對稱加密的DES加密函式,利用go語言實現DES加密解密操作。 加解密思路分析: 加密CBC分組模式 1:建立並返回一個使用DES演算法的cipher.block的介面 金鑰長度為64bit,即64/8位元組 2:對最後一個明
Go語言中操作三重DES加密詳解
| 1.三重DES 現在DES已經可以在現實的時間內被暴力破解,因此我們需要一種用來替代DES的分組密碼,三重DES就是出於這個目的被開發出來的。 三重DES(triple-DES)是為了增加DES的強度,將DES重複3次所得到的一種密碼演算法,通常縮寫
DES加密詳解
[TOC] > ***注: 下述所有加法均為模二加, 即為亦或運算*** ## 1 根據輸入的祕鑰得到16個子祕鑰 ### 1.1 大致流程 ```mermaid graph TB; a[輸入一個64位長度的字串,即為祕鑰K_0] b[根據PC-1表挑出56位作為新祕鑰K_1] c[K_1拆分,迴圈左
資料加密標準(DES)詳解
# 1 簡介 ## 1.1 歷史 DES(Data Encryption Standard)是由IBM公司在**1974年提出**的加密演算法,在**1977年被NIST定位資料加密標準**。隨後的很多年裡,DES都是最流行的對稱密碼演算法,尤其是在金融領域更是如此,直到90年代隨著對DES研究的深入和算
java加密算法入門(三)-非對稱加密詳解
共享數據 net clas 實例 查看 安全性 自己的 generator mir 1、簡單介紹 這幾天一直在看非對稱的加密,相比之前的兩篇內容,這次看了兩倍多的時間還雲裏霧裏的,所以這篇文章相對之前的兩篇,概念性的東西多了些,另外是代碼的每一步我都做了介紹,方便自己以後
對稱加密詳解,以及JAVA簡單實現
turn bsp 十進制 stat mage 需要 對稱密鑰 else ges (原) 常用的加密有3種 1、正向加密,如MD5,加密後密文固定,目前還沒辦法破解,但是可以能過數據庫撞庫有一定概率找到,不過現在一般用這種方式加密都會加上鹽值。 2、對稱加密,通過一個固定
數據加密--詳解 RSA加密算法 原理與實現
pri mir 對稱加密 模運算 速度 探討 進制 成績 分析 RSA算法簡介 RSA是最流行的非對稱加密算法之一。也被稱為公鑰加密。它是由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)在19
Python MD5加密詳解以及多次加密時的注意事項
在python中使用hashlib這個庫來進行MD5加密: import hashlib 在使用MD5加密時要注意加密內容的編碼格式: import hashlib //匯入hash庫 md5_object = hashlib.md5() //
Python MD5加密詳解以及多次加密的坑
在python中可以使用hashlib這個庫來使用MD5加密: import hashlib 在使用MD5加密的使用要注意加密內容的編碼格式: import hashlib //匯入hash庫函式 md5_object = hashlib.md5()
iOS開發 RSA加密解密與後臺之間的雙向加密詳解
序言 因為專案中需要用到RSA加密,剛開始也是有點亂,這兩天也整理的差不多了,希望能幫到大家。 這次先上程式碼,我想大部分人肯定是著急解決問題,所以不要廢話太多。 iOS端 後臺是PHP,給我了一段公鑰和他用私鑰加密後的base64編碼,讓我先解一下,看看能否解出(請先不要糾結為什麼給我公鑰解密,公鑰私鑰都
對稱加密,非對稱加密詳解
在使用一些軟體或者是系統的時候,我們常常聽到或者看到“公鑰”,“私鑰”這兩個詞,比如,我們在使用git的時候,常常要去先使用git生成自己的公鑰和私鑰,然後將公鑰提交到搭建了git的雲程式碼管理網站上去進行協作開發,那麼這個公鑰私鑰究竟是個什麼鬼? 一、對稱加密解密方式 我們的資料傳
pycrypto:AES加密詳解
最近在寫介面自動化指令碼,需要的payload引數需要加密,而採用的加密標準為AES,因此特地去學了一下,發現專門有加密演算法庫支援這種加密演算法,就是PyCrypto PyCrypto是一個免費的加密演算法庫,支援常見的DES、AES、以及MD5、SHA等各種HASH運算 PyPi地
對稱加密和非對稱加密詳解
github首頁:區塊鏈學習有用連結和25本區塊鏈書籍可免費閱讀,覺得有用就fork或是star 地址:https://github.com/cancerts/study-blockchain-referrence 點選這 資料加密演算法主要分為兩大類:對稱加密和非對稱加密
quick-cocos2d-x原始檔編譯及加密詳解
quick-cocos2d-x是用lua指令碼來寫的,而lua是明文形式,如果不對指令碼進行處理,那麼我們所寫的程式碼將可能暴露給別人(apk和ipa都是簡單的zip包裝)。 quick-cocos2d-x框架為我們提供了一個可編譯和加密程式碼的工具compile_scr
js的常見的三種密碼加密方式-MD5加密、Base64加密和解密和sha1加密詳解總結
寫在前面寫前端的時候,很多的時候是避免不了註冊這一關的,但是一般的註冊是沒有任何的難度的,無非就是一些簡單的獲取使用者輸入的資料,然後進行簡單的校驗以後呼叫介面,將資料傳送到後端,完成一個簡單的註冊的流程,那麼一般來說,密碼是不做加密的。但是也有一些資料庫裡面存放的是加密後的
JAVA RSA非對稱加密詳解
原文:原文地址 package com.rsa; import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import java.security.*; import jav
對稱加密之AES加密詳解
aes加密 文件 程序 分享 strong 使用 common key 直接 最近有人問我AES對稱加密是啥,我回答了個大概,發現自己不能清晰的講出來,特此記錄,以供學習 一、對稱加密 對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(de
JAVA實現DES加密實現詳解
ava util des算法 直接 print uri ret secure 過程 package util; import java.security.SecureRandom; import javax.crypto.spec.DESKeySpec; import j
加密演算法------DES加密演算法詳解
一、加密演算法的分類1.對稱加解密演算法a.通訊雙方同時掌握一個金鑰,加密解密都是由一個金鑰完成的(即加密金鑰等於解密金鑰,加解密金鑰可以相互推倒出來)。b.雙方通訊前共同擬定一個金鑰,不對第三方公開。c.不具有個體原子性,一個金鑰被共享,洩漏機率增大2.公私鑰加解密演算法a
DES加密演算法詳解
在網上搜了一下關於DES的說明,發現有些雜亂,所以還是有必要整合一下。 寫了一點程式碼,還沒有完成,不過,還不能編譯通過,^_^ 剛看了一下,發現還是說得夠模糊的,有機會再整理一下。 昏倒,一直執行不對,今天才仔細查出來,原來問題是出在Des_Data_P(const _b3