1. 程式人生 > >DES加密的詳解

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