1. 程式人生 > >C#中使用DES和AES加密解密

C#中使用DES和AES加密解密

程式碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace MyCryptography
{
    /// <summary>
    /// DES加密解密
    /// </summary>
    public class DES
    {
        /// <summary>
        /// 獲取金鑰
        /// </summary>
        private static string Key
        {
            get { return @"
[email protected]
+#wG+Z"; } } /// <summary> /// 獲取向量 /// </summary> private static string IV { get { return @"L%n67}G\[email protected]%:~Y"; } } /// <summary> /// DES加密 /// </summary> /// <param name="plainStr">明文字串</param> /// <returns>密文</returns> public static string DESEncrypt(string plainStr) { byte[] bKey = Encoding.UTF8.GetBytes(Key); byte[] bIV = Encoding.UTF8.GetBytes(IV); byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null; DESCryptoServiceProvider des = new DESCryptoServiceProvider(); try { using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); encrypt = Convert.ToBase64String(mStream.ToArray()); } } } catch { } des.Clear(); return encrypt; } /// <summary> /// DES解密 /// </summary> /// <param name="encryptStr">密文字串</param> /// <returns>明文</returns> public static string DESDecrypt(string encryptStr) { byte[] bKey = Encoding.UTF8.GetBytes(Key); byte[] bIV = Encoding.UTF8.GetBytes(IV); byte[] byteArray = Convert.FromBase64String(encryptStr); string decrypt = null; DESCryptoServiceProvider des = new DESCryptoServiceProvider(); try { using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); decrypt = Encoding.UTF8.GetString(mStream.ToArray()); } } } catch { } des.Clear(); return decrypt; } } /// <summary> /// AES加密解密 /// </summary> public class AES { /// <summary> /// 獲取金鑰 /// </summary> private static string Key { get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; } } /// <summary> /// 獲取向量 /// </summary> private static string IV { get { return @"L+\~f4,Ir)b$=pkf"; } } /// <summary> /// AES加密 /// </summary> /// <param name="plainStr">明文字串</param> /// <returns>密文</returns> public static string AESEncrypt(string plainStr) { byte[] bKey = Encoding.UTF8.GetBytes(Key); byte[] bIV = Encoding.UTF8.GetBytes(IV); byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null; Rijndael aes = Rijndael.Create(); try { using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); encrypt = Convert.ToBase64String(mStream.ToArray()); } } } catch { } aes.Clear(); return encrypt; } /// <summary> /// AES加密 /// </summary> /// <param name="plainStr">明文字串</param> /// <param name="returnNull">加密失敗時是否返回 null,false 返回 String.Empty</param> /// <returns>密文</returns> public static string AESEncrypt(string plainStr, bool returnNull) { string encrypt = AESEncrypt(plainStr); return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt); } /// <summary> /// AES解密 /// </summary> /// <param name="encryptStr">密文字串</param> /// <returns>明文</returns> public static string AESDecrypt(string encryptStr) { byte[] bKey = Encoding.UTF8.GetBytes(Key); byte[] bIV = Encoding.UTF8.GetBytes(IV); byte[] byteArray = Convert.FromBase64String(encryptStr); string decrypt = null; Rijndael aes = Rijndael.Create(); try { using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); decrypt = Encoding.UTF8.GetString(mStream.ToArray()); } } } catch { } aes.Clear(); return decrypt; } /// <summary> /// AES解密 /// </summary> /// <param name="encryptStr">密文字串</param> /// <param name="returnNull">解密失敗時是否返回 null,false 返回 String.Empty</param> /// <returns>明文</returns> public static string AESDecrypt(string encryptStr, bool returnNull) { string decrypt = AESDecrypt(encryptStr); return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt); } } }

相關推薦

C#使用DESAES加密解密

程式碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System; using System.Text;

C語言DES密碼學加密解密

 此篇部落格,僅此紀念國慶七天長假的折磨。。。 ///DES #include<stdio.h> #include<string.h> #include<string> using namespace std; int IP_Table[64] =

java常用工具類之DESBase64加密解密

一、DES加密和解密 package com.itjh.javaUtil; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import

C#, Java, PHP, PythonJavascript幾種語言的AES加密解密實現

博客 部分 結果 cat stx add 控制 res code 特別提示:本人博客部分有參考網絡其他博客,但均是本人親手編寫過並驗證通過。如發現博客有錯誤,請及時提出以免誤導其他人,謝謝!歡迎轉載,但記得標明文章出處:http://www.cnblogs.com/ma

C# 實現 JAVA AES加密解密[原創]

com base gets tran con spec ole tor 技術分享 以下是網上普遍能收到的JAVA AES加密解密方法。 因為裏面用到了KeyGenerator 和 SecureRandom,但是.NET 裏面沒有這2個類。無法使用安全隨機數生成KEY。 我們

AES加密解密 Java運用

upper span pub substring rac ont wid mem log AES全稱 Advanced Encryption Standard, 高級加密算法,更加安全,可取代DES。 Aes: package com.blog.d201706.en

C# 實現AES加密--解密

bsp 密文 rem adding gets manage string sys cipher /// <summary> /// AES 加密 /// </summary> ///

ruby 實現javaaes 加密解密

abcde class hwm nbsp crypt 實現 () cbc sad def aes_encrypt() cipher = OpenSSL::Cipher::AES.new(128, :CBC) cipher.encrypt cipher.key =

PHPAES加密解密

我們在工作中會遇到各種加密,下面就是PHP中AES加密解密的類 <?php  class Aes {     /**      * var string&nbs

使用CryptoJS的md5aes加密

使用CryptoJS中的md5和aes加密 參考資料: 使用CryptoJS中的md5和aes加密 CryptoJS實現AES加密 // md5 function md5encode(word) { return CryptoJS.MD5(word

C#與Java AES 加密解密

參考文件:https://www.cnblogs.com/xbzhu/p/7064642.html 前幾天對接Java介面,需要C#加密引數,Java解密。奈何網上找了一堆大同小異的加解密方法都跟Jaca加密的密文不一致,Java介面也無法解密,直到看見上面連結的第二種方法。能夠正常的解密Java加密的

PHP7.2AES加密解密方法mcrypt_module_open()替換方案

直接粘程式碼,該類是基於微信公眾號訊息加密解密所提供的PHP DEMO改造而來,目前使用於彬彬大學APP介面token校驗中。php的mcrypt 擴充套件已經過時了大約10年,並且用起來很複雜。因此它被廢棄並且被 OpenSSL 所取代。 從PHP 7.2起它將被從核心程式

windows使用Python進行AES加密解密-加密解密功能實現

PyCrypto是一款非常實用的Python加密模組,最近寫了一個檔案加密指令碼需要用到AES加密(http://blog.csdn.net/u013578500/article/details/77916990),和大家分析一下心得。 下載與安裝:PyCrypto專案

javajs實現aes加密解密

由於公司安全測試,要對重要資訊進行加密傳輸,使得java、android、ios一致。 java程式碼 package gov.communitycloud.user.utils; import java.math.BigInteger; import javax.cr

C#之AES加密解密

高階加密標準(AES,Advanced Encryption Standard)為最常見的對稱加密演算法(微信小程式加密傳輸就是用這個加密演算法的)。對稱加密演算法也就是加密和解密用相同的金鑰,具體的加密流程如下圖:(原理:轉自https://blog.csdn.net/qq

windows使用Python進行AES加密解密-文字檔案加密工具

之前的文章http://blog.csdn.net/u013578500/article/details/77905924 簡單介紹了一下使用PyCrypto模組實現對字串的加密解密,裡面有提到我利用這個模組寫了一個對文字檔案進行加密解密的小指令碼,這裡和大家分享一下。 1

PHP7+AES加密解密方法,openssl 替代 mcrypt

mcrypt十年過去,現在php7+中已經開始淘汰。官方給出掉提示: mcrypt_get_block_size — 獲得加密演算法的分組大小 Warning This function has been DEPRECATED as of PHP 7.1

python實現aes加密解密,RSA簽名驗籤,RSA加密解密,並呼叫介面

用python實現呼叫介面的示例程式碼,過程涉及到很多的加密演算法,值得分享一下。首先公鑰和私鑰如何生成,並且能相容java平臺,嘗試了很多方法。最終決定用openssl命令前提,需要安裝openssl,Crypto庫生成公鑰私鑰對過程:生成私鑰: openssl ge

AndroidAES加密解密。解決密文不唯一、解密不出明文問題

AES加密方式是目前來看值得選擇的加密方式,但是在Android中使用AES加密時,有些坑看似不大,卻讓很多人栽了跟頭。 Android 4.2之後SHA1PRNG強隨意種子演算法呼叫不同,需要區別呼叫,這個你造嗎。 下面貼出部分關鍵程式碼,程式碼與網路上普

Java端JS端的AES加密解密同步

Java端和JS端的AES加密演算法同步 公司要求登入時使用者名稱和密碼必須先加密,再將資料傳送到伺服器。由於這種加密必須要求是可逆的,所以不能用MD5來加密,MD5不是可逆的。後臺選擇了用AES加密。然後問題就是如何跟公司的Java演算法得到同樣的結果。