日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中的几种加密算法整理

發(fā)布時間:2025/7/25 C# 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中的几种加密算法整理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.Text;
using System.Security.Cryptography;
using System.IO;
/// <summary>
///DEncrypt 的摘要說明
/// </summary>
public static class DEncrypt
{
??????? /// <summary>
??????? /// MD5函數(shù)
??????? /// </summary>
??????? /// <param name="input">原始字符串</param>
??????? /// <returns>MD5結(jié)果</returns>
??????? public static string MD5(string input)
??????? {
??????????? byte[] bytes = Encoding.UTF8.GetBytes(input);
??????????? bytes = new MD5CryptoServiceProvider().ComputeHash(bytes);
??????????? string result = string.Empty;
??????????? for (int i = 0; i < bytes.Length; i++)
??????????????? result += bytes[i].ToString("x").PadLeft(2, '0');

??????????? return result;
??????? }

??????? /// <summary>
??????? /// SHA256函數(shù)
??????? /// </summary>
??????? /// /// <param name="input">原始字符串</param>
??????? /// <returns>SHA256結(jié)果</returns>
??????? public static string SHA256(string input)
??????? {
??????????? byte[] data = Encoding.UTF8.GetBytes(input);
??????????? SHA256Managed sha256 = new SHA256Managed();
??????????? byte[] result = sha256.ComputeHash(data);
??????????? return Convert.ToBase64String(result);? //返回長度為44字節(jié)的字符串
??????? }

??????? //默認密鑰向量
??????? private static byte[] AESKeys = { 0x41, 0x72, 0x65, 0x79, 0x6F, 0x75, 0x6D, 0x79, 0x53, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F };

??????? public static string AESEncode(string input, string key)
??????? {
??????????? key = GetSubString(key, 32, string.Empty);
??????????? key = key.PadRight(32, ' ');

??????????? RijndaelManaged rijndaelProvider = new RijndaelManaged();
??????????? rijndaelProvider.Key = Encoding.UTF8.GetBytes(key.Substring(0, 32));
??????????? rijndaelProvider.IV = AESKeys;
??????????? ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor();

??????????? byte[] inputData = Encoding.UTF8.GetBytes(input);
??????????? byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0, inputData.Length);

??????????? return Convert.ToBase64String(encryptedData);
??????? }

??????? public static string AESDecode(string input, string key)
??????? {
??????????? try
??????????? {
??????????????? key = GetSubString(key, 32, string.Empty);
??????????????? key = key.PadRight(32, ' ');

??????????????? RijndaelManaged rijndaelProvider = new RijndaelManaged();
??????????????? rijndaelProvider.Key = Encoding.UTF8.GetBytes(key);
??????????????? rijndaelProvider.IV = AESKeys;
??????????????? ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor();

??????????????? byte[] inputData = Convert.FromBase64String(input);
??????????????? byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length);

??????????????? return Encoding.UTF8.GetString(decryptedData);
??????????? }
??????????? catch
??????????? {
??????????????? return string.Empty;
??????????? }

??????? }

??????? //默認密鑰向量
??????? private static byte[] DESKeys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

??????? /// <summary>
??????? /// DES加密字符串
??????? /// </summary>
??????? /// <param name="input">待加密的字符串</param>
??????? /// <param name="key">加密密鑰,要求為8位</param>
??????? /// <returns>加密成功返回加密后的字符串,失敗返回源串</returns>
??????? public static string DESEncode(string input, string key)
??????? {
??????????? key = GetSubString(key, 8, string.Empty);
??????????? key = key.PadRight(8, ' ');
??????????? byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
??????????? byte[] rgbIV = DESKeys;
??????????? byte[] inputByteArray = Encoding.UTF8.GetBytes(input);
??????????? DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
??????????? MemoryStream memory = new MemoryStream();
??????????? CryptoStream stream = new CryptoStream(memory, provider.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
??????????? stream.Write(inputByteArray, 0, inputByteArray.Length);
??????????? stream.FlushFinalBlock();
??????????? return Convert.ToBase64String(memory.ToArray());

??????? }

??????? /// <summary>
??????? /// DES解密字符串
??????? /// </summary>
??????? /// <param name="input">待解密的字符串</param>
??????? /// <param name="key">解密密鑰,要求為8位,和加密密鑰相同</param>
??????? /// <returns>解密成功返回解密后的字符串,失敗返源串</returns>
??????? public static string DESDecode(string input, string key)
??????? {
??????????? try
??????????? {
??????????????? key = GetSubString(key, 8, string.Empty);
??????????????? key = key.PadRight(8, ' ');
??????????????? byte[] rgbKey = Encoding.UTF8.GetBytes(key);
??????????????? byte[] rgbIV = DESKeys;
??????????????? byte[] inputByteArray = Convert.FromBase64String(input);
??????????????? DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

??????????????? MemoryStream memory = new MemoryStream();
??????????????? CryptoStream stream = new CryptoStream(memory, provider.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
??????????????? stream.Write(inputByteArray, 0, inputByteArray.Length);
??????????????? stream.FlushFinalBlock();
??????????????? return Encoding.UTF8.GetString(memory.ToArray());
??????????? }
??????????? catch
??????????? {
??????????????? return string.Empty;
??????????? }
??????? }

??????? public static string GetSubString(string input, int length, string pad)
??????? {
??????????? return GetSubString(input, 0, length, pad);
??????? }

??????? /// <summary>
??????? /// 取指定長度的字符串
??????? /// </summary>
??????? /// <param name="input">要檢查的字符串</param>
??????? /// <param name="start">起始位置</param>
??????? /// <param name="length">指定長度</param>
??????? /// <param name="pad">用于替換的字符串</param>
??????? /// <returns>截取后的字符串</returns>
??????? public static string GetSubString(string input, int start, int length, string pad)
??????? {
??????????? string result = input;

??????????? Byte[] comments = Encoding.UTF8.GetBytes(input);
??????????? foreach (char c in Encoding.UTF8.GetChars(comments))
??????????? {??? //當是日文或韓文時(注:中文的范圍:\u4e00 - \u9fa5, 日文在\u0800 - \u4e00, 韓文為\xAC00-\xD7A3)
??????????????? if ((c > '\u0800' && c < '\u4e00') || (c > '\xAC00' && c < '\xD7A3'))
??????????????? {
??????????????????? //if (System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, "[\u0800-\u4e00]+") || System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, "[\xAC00-\xD7A3]+"))
??????????????????? //當截取的起始位置超出字段串長度時
??????????????????? if (start >= input.Length)
??????????????????????? return string.Empty;
??????????????????? else
??????????????????????? return input.Substring(start, ((length + start) > input.Length) ? (input.Length - start) : length);
??????????????? }
??????????? }

??????????? if (length >= 0)
??????????? {
??????????????? byte[] bytes = Encoding.Default.GetBytes(input);

??????????????? //當字符串長度大于起始位置
??????????????? if (bytes.Length > start)
??????????????? {
??????????????????? int stopIndex = bytes.Length;

??????????????????? //當要截取的長度在字符串的有效長度范圍內(nèi)
??????????????????? if (bytes.Length > (start + length))
??????????????????? {
??????????????????????? stopIndex = length + start;
??????????????????? }
??????????????????? else
??????????????????? {?? //當不在有效范圍內(nèi)時,只取到字符串的結(jié)尾

??????????????????????? length = bytes.Length - start;
??????????????????????? pad = string.Empty;
??????????????????? }

??????????????????? int realLength = length;
??????????????????? int[] resultFlag = new int[length];
??????????????????? byte[] byteResult = null;

??????????????????? int flag = 0;
??????????????????? for (int i = start; i < stopIndex; i++)
??????????????????? {
??????????????????????? if (bytes[i] > 127)
??????????????????????? {
??????????????????????????? flag++;
??????????????????????????? if (flag == 3)
??????????????????????????????? flag = 1;
??????????????????????? }
??????????????????????? else
??????????????????????????? flag = 0;

??????????????????????? resultFlag[i] = flag;
??????????????????? }

??????????????????? if ((bytes[stopIndex - 1] > 127) && (resultFlag[length - 1] == 1))
??????????????????????? realLength = length + 1;

??????????????????? byteResult = new byte[realLength];

??????????????????? Array.Copy(bytes, start, byteResult, 0, realLength);

??????????????????? result = Encoding.Default.GetString(byteResult);
??????????????????? result = result + pad;
??????????????? }
??????????? }

??????????? return result;
??????? }
??? }

轉(zhuǎn)載于:https://www.cnblogs.com/janneystory/archive/2013/04/11/3014558.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的C#中的几种加密算法整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人脱了内裤趴开腿让男躁 | 欧美 中文字幕 | 国产精品亚洲精品 | 鲁一鲁色一色 | 强侵犯の奶水授乳羞羞漫虐 | 欧美bbbbbbbbbbbb精品 | 扒开腿揉捏花蒂h | 成人试看120秒体验区 | 动漫美女视频 | 中文字幕在线视频一区二区 | 国产精品网站在线观看 | 香蕉影院在线 | 日韩黄色网络 | 国产三级自拍视频 | www.色图 | 亚洲va久久久噜噜噜久久天堂 | 怎么可能高潮了就结束漫画 | 99精品视频播放 | 手机在线看黄色 | 亚洲第一字幕 | 国产在线观看99 | 91免费看. | 欧美brazzers | 成人在线视频免费播放 | 91久久国产视频 | 91亚洲视频在线 | 黄色1级大片 | 搡老熟女老女人一区二区 | 本庄优花番号 | 69xx网站| 国产三级在线看 | 看片在线| 久久伊人成人网 | 青青操国产视频 | 毛片在线观看网站 | 制服丝袜av一区二区三区下载 | 91免费看| 一区二区三区在线视频播放 | 亚洲第一天堂av | 日韩三级理论 | 国产成人三级在线观看 | 国产免费啪啪 | 亚洲熟妇丰满大屁股熟妇 | 欧美日韩乱 | 性少妇videosexfre | 亚洲男女网站 | 亚洲色图导航 | 激情啪啪网站 | 青青草十七色 | 香蕉视频网页版 | 亚洲一二三在线 | 欧美视频在线观看一区二区三区 | 激情另类视频 | 做爰无遮挡三级 | 国产精品久久影视 | 久久77| 国产精品三级久久久久久电影 | 天天操天天插天天射 | 日韩欧美麻豆 | 韩国特级毛片 | 免费网站观看www在线观 | 欧美 日韩 国产 成人 在线 91 | 日本高清在线一区 | 成人午夜在线观看视频 | 日韩在线观看视频一区二区三区 | 永久免费在线视频 | 亚洲午夜一区 | 色综合社区| 欧美日韩国产一区在线 | 亚洲av永久无码精品国产精品 | 成年人视屏 | 日韩精品一区二区电影 | 超污巨黄的小短文 | 超碰夜夜 | 少妇av一区二区三区无码 | 日本免费一区二区三区最新 | 国产欧美一区二区精品久久久 | 亚洲观看黄色网 | 日韩1页 | 国语对白一区 | 欧美一区二区三区精品 | 国产成人一区二区三区电影 | 亚洲AV无码成人精品区明星换面 | 91小宝寻花一区二区三区 | 欧美 亚洲 | 成人黄色激情网 | 96人xxxxxxxxx69| 日韩欧美一二区 | av看片在线 | 鲁在线视频 | 欧美性生活一区二区三区 | 免费成人深夜夜 | 国产精品老熟女视频一区二区 | 狠狠干夜夜骑 | av加勒比| 黄色三级免费观看 | 久久婷婷视频 | 麻豆视频在线看 | 人妻人人澡人人添人人爽 |