1. 程式人生 > >DES對稱加密演算法在(.NET Framework) C#中的使用

DES對稱加密演算法在(.NET Framework) C#中的使用

關於對稱加密演算法,這個不多作解釋,百度百科給出的說明如下:des對稱加密,對稱加密,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的金鑰,資訊的傳送者和資訊的接收者在進行資訊的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼),是一種對稱加密演算法。

簡而言之就是用一個金鑰加密的資料,也必須用該金鑰來解密。這種方式在我們日常開發中非常常見。與之對應的就是非對稱加密,廣泛應用於web開發的https技術就是用了非對稱加密和對稱加密相結合的方式,這裡不多作展開,我們只討論對稱加密。

下面是一個簡單的demo,直接拿來用就行(測試在.NET Framework中可以完美執行)。

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace NETFrameworkTools
{
    /// <summary>
    /// DES對稱加密和解密的工具類
    /// </summary>
    public static class DESTool
    {
        /// <summary>
        /// DES加密字串
        /// </summary>
        /// <param name="encryptString">待加密的字串</param>
        /// <param name="encryptKey">加密金鑰,要求為8位</param>
        /// <returns>加密成功返回加密後的字串,失敗返回源串</returns>
        public static string EncryptDES(string encryptString, string key)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(key);

                //用於對稱演算法的初始化向量(預設值)。
                byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Convert.ToBase64String(mStream.ToArray());
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// DES解密字串
        /// </summary>
        /// <param name="decryptString">待解密的字串</param>
        /// <param name="key">解密金鑰,要求8位</param>
        /// <returns></returns>
        public static string DecryptDES(string decryptString, string key)
        {
            try
            {
                //用於對稱演算法的初始化向量(預設值)
                byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
                byte[] rgbKey = Encoding.UTF8.GetBytes(key);
                byte[] rgbIV = Keys;
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(mStream.ToArray());
            }
            catch
            {
                return decryptString;
            }
        }
    }
}

如有不正之處,還望大佬們多指點。

相關推薦

DES對稱加密演算法在(.NET Framework) C#的使用

關於對稱加密演算法,這個不多作解釋,百度百科給出的說明如下:des對稱加密,對稱加密,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的金鑰,資訊的傳送者和資訊的接收者在進行資訊的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼),是一種對稱加密演算法。簡而言之就是用

DES/3DES/AES 三種對稱加密演算法在 Java 的實現

有兩句話是這麼說的:1)演算法和資料結構就是程式設計的一個重要部分,你若失掉了演算法和資料結構,你就把一切都失掉了。2)程式設計就是演算法和資料結構,演算法和資料結構是程式設計的靈魂。注意,這可不是我說的,是無數程式設計師總結的,話說的很實在也很精闢,若想長久可持續發展,多研

對稱加密演算法C#的踩坑日常

前言 有幸接觸了一下傳說中的對稱加密演算法3DES 感覺這些加密演算法與我的工作是想去甚遠的,一般沒什麼機會接觸這些東西 今次瞭解了一下3DES這個對稱演算法 原理算不上明白,算是踩了C#中的一些坑吧 C#中對於金鑰的處理比較奇怪,花費了一晚上一早上的時間才弄明白 期間偷窺了不少C#的原始碼 下面由我娓娓道來

c# AES DES MD5加密演算法

MD5加密封裝   MD5常用加密FormsAuthentication.HashPasswordForStoringInConfigFile在Net Freamwork4.5以後就不在支援,下面整理了32位或16位下的幾個方法,以及不同寫法,最後一個由從老版本遷移過來,後續淘汰不用。 us

對稱加密演算法-DES,3DES,AES

1.jdk與bc實現DES演算法: package com.samlai.security; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.sec

常用對稱加密演算法DES/AES)類(PHP)

看註釋,啥也不說了,歡迎各種跨平臺測試! /** * 常用對稱加密演算法類 * 支援金鑰:64/128/256 bit(位元組長度8/16/32) * 支援演算法:DES/AES(根據金鑰長度自動匹配使用:DES:64bit AES:128/256bit) * 支

java常用的對稱加密演算法

一 常用的對稱加密演算法 對稱加密演算法簡單來講就是加密和解密使用同一個金鑰,並且加密解密互為逆運算,如加法和減法,先加密再解密 與先解密後加密都能得到原結果,常用的加密演算法有DES;3DES(二倍長,三倍長);AES; 3DES是DES擴充套件,3D

DES 3DES AES Blowfish 對稱加密演算法比較

計算機加密技術分為對稱加密,及非對稱加密兩種技術. 對稱加密技術基本的實現是:資料傳送方和資料接收方共享一個金鑰,進行資料加密和解密工作。但是他也有個問題,就是一旦金鑰被第三方獲取,資料安全性就無法保證。 非對稱加密技術中,資料傳送方和接收方利用不同的金鑰進行資料加密及解密工作。簡言之,就是金鑰1只能

OpenSSLHMAC,MD5以及對稱加密演算法的應用

HMAC和MD5: HMAC的使用:#include <openssl/hmac.h> unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,

Java常用對稱加密演算法-DES

直接上程式碼import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.SecureRandom; impo

對稱加密演算法——DES演算法(python實現)

一、DES演算法描述         DES演算法總的說來可以兩部分組成: 1、對金鑰的處理。這一部分是把我們用的64位金鑰(實際用的56位,去掉了8個奇偶校驗位)分散成16個48位的子金鑰。 2、對資料的加密。通過第一步生成的子金鑰來加密我們所要加密的資料,最終生成密文。 下面就通過這兩

c語言實現rsa nopadding非對稱加密演算法(openssl api方式),匹配java後端 bouncycastle

公私鑰: —–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC32V2IAfotG8bZhPF8/Bx8y65g EDycAMyTWmvpPCfagEKORO/WvdkTYim7yhG/+

C#實現DES對稱加密

入口引數有三個:key、data、mode。 key為加密解密使用的金鑰,data為加密解密的資料,mode為其工作模式。當模式為加密模式時,明文按照64位進行分組,形成明文組,key用於對資料加密,當模式為解密模式時,key用於對資料解密。實際運用中,金鑰只用到了64位中

DES、3DES、AES、PBE對稱加密演算法實現及應用

1.對稱加密演算法概述 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。 在對稱加密

.NET Core加解密實戰系列之——RSA非對稱加密演算法

![](https://img2020.cnblogs.com/blog/2029875/202006/2029875-20200612165254059-1754283874.png) --- [TOC] ## 簡介 加解密現狀,編寫此專案的背景: - 需要考慮系統環境相容性問題(Linux、Wi

.NET Core加解密實戰系列之——對稱加密演算法

## 簡介 加解密現狀,編寫此係列文章的背景: - 需要考慮系統環境相容性問題(Linux、Windows) - 語言互通問題(如C#、Java等)(加解密本質上沒有語言之分,所以原則上不存在互通性問題) - 網上資料版本不一、或不全面 - .NET官方庫密碼演算法提供不全面,很難針對其他語言(Java)進

計算機網路安全 —— 對稱加密演算法 DES (一)

一、對稱加密演算法概念        我們通過計算機網路傳輸資料時,如果無法防止他人竊聽, 可以利用密碼學技術將傳送的資料變換成對任何不知道如何做逆變換人都不可理解的形式, 從而保證了資料的機密性。這種變換被稱為加密( encryption),被加密的資料被稱為密 文(

DES對稱加密算法簡析

nts 奇偶校驗位 throw parse https stl public aes ast 1 對稱加密算法   在了解DES算法前,先加單介紹一下對稱加密算法,因為DES屬於對稱加密算法的一種。   對稱加密算法是應用較早的加密算法,技術成熟。在對稱加密算法中,數據發信

des對稱加密算法 Invalid key length: 8 bytes

des sta mmd .get col 思路 加密算 encrypt valid Security.addProvider(new com.sun.crypto.provider.SunJCE());Key key = new SecretKeySpec(secretK

php openssl_sign() 語法+RSA公私鑰加密解密,非對稱加密演算法詳解

其實有時候覺得寫部落格好煩,就個函式就開篇部落格。很小的意見事情而已,知道的人看來多取一舉,或者說沒什麼必要,浪費時間,不知道的人就會很鬱悶。技術就是這樣的,懂的人覺得真的很簡單啊,不知道的人真的好難。。。 一般在跟第三方介面對接資料的時候,為了保證很多都使用的RSA簽名,沒性趣瞭解的同學只需要