• CryptoHelper


    
    namespace Microshaoft
    {
        using System;
        using System.Security.Cryptography;
        using System.Text;
        using System.IO;
        class Class1
        {
            static void Main()
            {
                //RSA
                UTF8Encoding e = new UTF8Encoding();
                byte[] data = e.GetBytes("测试@microshaoft.com");
                byte[] encryptedData;
                //byte[] decryptedData;
                RSACryptoServiceProvider x = new RSACryptoServiceProvider();
                string privateKey = x.ToXmlString(true);
                Console.WriteLine("RSA Private Key: {0}", privateKey);
                string publicKey = x.ToXmlString(false);
                Console.WriteLine("RSA Public Key: {0}", publicKey);
                //公钥加密
                encryptedData = CryptoHelper.RSAEncrypt(data, publicKey, false);
                //私钥解密
                data = CryptoHelper.RSADecrypt(encryptedData, privateKey, false);
                Console.WriteLine("RSA Decrypted plaintext: {0}", e.GetString(data));
                //私钥签名
                byte[] signature = CryptoHelper.RSASignSHA1(data, privateKey);
                //公钥验签
                Console.WriteLine(CryptoHelper.RSAVerifySHA1(data, publicKey, signature));
                //TripleDES
                string key = "000111222333444555666777888999aaabbbcccdddeeefff";//48
                key = "012345678901234567890123456789012345678901234567";
                key = "abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef";
                key = "0123456789abcdef01111111111111111111111111111110";
                string iv = "0123456789abcdef";//16
                iv = "0000000000000000";
                data = e.GetBytes("测试@microshaoft.com");
                data = CryptoHelper.TripleDESEncrypt
                                                (
                                                    data,
                                                    CryptoHelper.HexStringToBytesArray(key),
                                                    CryptoHelper.HexStringToBytesArray(iv)
                                                );
                data = CryptoHelper.TripleDESDecrypt
                                                (
                                                    data,
                                                    CryptoHelper.HexStringToBytesArray(key),
                                                    CryptoHelper.HexStringToBytesArray(iv)
                                                );
                Console.WriteLine("3DES Decrypted plaintext: {0}", e.GetString(data));
                Console.WriteLine(Environment.Version.ToString());
            }
        }
        public class CryptoHelper
        {
            public static byte[] RSASignSHA1
                                    (
                                        byte[] data
                                        , string privateKey
                                    )
            {
                RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
                return RSASignSHA1
                            (
                                provider
                                , data
                                , privateKey
                            );
            }
            public static byte[] RSASignSHA1
                    (
                        RSACryptoServiceProvider provider
                        , byte[] data
                        , string privateKey
                    )
            {
                provider.FromXmlString(privateKey);
                return provider.SignHash
                                    (
                                        ComputeSHA1(data)
                                        , "SHA1"
                                    );
            }
            public static bool RSAVerifySHA1
                                    (
                                        byte[] data
                                        , string publicKey
                                        , byte[] signature
                                    )
            {
                RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
                return RSAVerifySHA1
                                (
                                    provider
                                    , data
                                    , publicKey
                                    , signature
                                );
            }
            public static bool RSAVerifySHA1
                                    (
                                        RSACryptoServiceProvider provider
                                        , byte[] data
                                        , string publicKey
                                        , byte[] signature
                                    )
            {
                provider.FromXmlString(publicKey);
                return provider.VerifyHash
                                    (
                                        ComputeSHA1(data)
                                        , "SHA1"
                                        , signature
                                    );
            }
            public static byte[] RSASignMD5
                                    (
                                        byte[] data
                                        , string privateKey
                                    )
            {
                RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
                return RSASignMD5
                            (
                                provider
                                , data
                                , privateKey
                            );
            }
            public static byte[] RSASignMD5
                                    (
                                        RSACryptoServiceProvider provider
                                        , byte[] data
                                        , string privateKey
                                    )
            {
                provider.FromXmlString(privateKey);
                return provider.SignHash
                            (
                                ComputeMD5(data)
                                , "MD5"
                            );
            }
            public static bool RSAVerifyMD5
                                    (
                                        byte[] data
                                        , string publicKey
                                        , byte[] signature
                                    )
            {
                RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
                return RSAVerifyMD5
                                    (
                                        provider
                                        , data
                                        , publicKey
                                        , signature
                                    );
            }
            public static bool RSAVerifyMD5
                                    (
                                        RSACryptoServiceProvider provider
                                        , byte[] data
                                        , string publicKey
                                        , byte[] signature
                                    )
            {
                provider.FromXmlString(publicKey);
                return provider.VerifyHash
                                    (
                                        ComputeMD5(data)
                                        , "MD5"
                                        , signature
                                    );
            }
            public static byte[] RSAEncrypt
                                    (
                                        byte[] data
                                        , string publicKey
                                        , bool DoOAEPPadding
                                    )
            {
                RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
                return RSAEncrypt
                            (
                                provider,
                                data,
                                publicKey,
                                DoOAEPPadding
                            );
            }
            public static byte[] RSAEncrypt
                            (
                                RSACryptoServiceProvider provider
                                , byte[] data
                                , string publicKey
                                , bool DoOAEPPadding
                            )
            {
                provider.FromXmlString(publicKey);
                return provider.Encrypt(data, DoOAEPPadding);
            }
            public static byte[] RSADecrypt
                                    (
                                        byte[] data
                                        , string privateKey
                                        , bool DoOAEPPadding
                                    )
            {
                RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
                return RSADecrypt
                            (
                                provider,
                                data,
                                privateKey,
                                DoOAEPPadding
                            );
            }
            public static byte[] RSADecrypt
                            (
                                RSACryptoServiceProvider provider
                                , byte[] data
                                , string privateKey
                                , bool DoOAEPPadding
                            )
            {
                provider.FromXmlString(privateKey);
                return provider.Decrypt(data, DoOAEPPadding);
            }
            public static byte[] TripleDESDecrypt
                                            (
                                                byte[] data
                                                , byte[] Key
                                                , byte[] IV
                                            )
            {
                TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
                des.Key = Key;
                des.IV = IV;
                return des.CreateDecryptor().TransformFinalBlock(data, 0, data.Length);
            }
            public static byte[] TripleDESDecrypt
                                            (
                                                string text
                                                , string HexStringKey
                                                , string HexStringIV
                                            )
            {
                return TripleDESDecrypt
                                (
                                    HexStringToBytesArray(text)
                                    , HexStringToBytesArray(HexStringKey)
                                    , HexStringToBytesArray(HexStringIV)
                                );
            }
            public static byte[] TripleDESDecrypt
                                        (
                                            string text
                                            , byte[] Key
                                            , byte[] IV
                                        )
            {
                return TripleDESDecrypt
                                (
                                    HexStringToBytesArray(text)
                                    , Key
                                    , IV
                                );
            }
            public static string TripleDESDecrypt
                                        (
                                            string text
                                            , string HexStringKey
                                            , string HexStringIV
                                            , Encoding e //原文的encoding
                                        )
            {
                return e.GetString
                    (
                        TripleDESDecrypt
                            (
                                text
                                , HexStringKey
                                , HexStringIV
                            )
                    );
            }
            public static string TripleDESDecrypt
                                        (
                                            string text
                                            , byte[] Key
                                            , byte[] IV
                                            , Encoding e //原文的encoding
                                        )
            {
                return e.GetString
                            (
                                TripleDESDecrypt
                                    (
                                        text
                                        , Key
                                        , IV
                                    )
                            );
            }
            public static string GenerateTripleDESHexStringKey()
            {
                TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
                des.GenerateKey();
                return BytesArrayToHexString(des.Key);
            }
            public static string GenerateTripleDESHexStringIV()
            {
                TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
                des.GenerateIV();
                return BytesArrayToHexString(des.IV);
            }
            public static byte[] TripleDESEncrypt
                                            (
                                                byte[] data
                                                , byte[] Key
                                                , byte[] IV
                                            )
            {
                TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
                des.Key = Key;
                des.IV = IV;
                return des.CreateEncryptor().TransformFinalBlock(data, 0, data.Length);
            }
            public static byte[] TripleDESEncrypt
                                            (
                                                string text
                                                , Encoding e
                                                , byte[] Key
                                                , byte[] IV
                                            )
            {
                return TripleDESEncrypt
                                (
                                    e.GetBytes(text)
                                    , Key
                                    , IV
                                );
            }
            public static byte[] TripleDESEncrypt
                                            (
                                                string text
                                                , Encoding e
                                                , string HexStringKey
                                                , string HexStringIV
                                            )
            {
                return TripleDESEncrypt
                                (
                                    text
                                    , e
                                    , HexStringToBytesArray(HexStringKey)
                                    , HexStringToBytesArray(HexStringIV)
                                );
            }
            public static byte[] ComputeSHA1(byte[] data)
            {
                return new SHA1CryptoServiceProvider().ComputeHash(data);
            }
            public static byte[] ComputeSHA1(string text, Encoding e)
            {
                return ComputeSHA1(e.GetBytes(text));
            }
            public static byte[] ComputeSHA1(string text)
            {
                return ComputeSHA1(text, Encoding.UTF8);
            }
            public static byte[] ComputeSHA1(Stream stream)
            {
                return new SHA1CryptoServiceProvider().ComputeHash(stream);
            }
            public static byte[] ComputeMD5(byte[] data)
            {
                return new MD5CryptoServiceProvider().ComputeHash(data, 0, data.Length);
            }
            public static byte[] ComputeMD5(string text, Encoding e)
            {
                return ComputeMD5(e.GetBytes(text));
            }
            public static byte[] ComputeMD5(string text)
            {
                return ComputeMD5(text, Encoding.UTF8);
            }
            public static byte[] ComputeMD5(Stream stream)
            {
                return new MD5CryptoServiceProvider().ComputeHash(stream);
            }
            public static string BytesArrayToHexString(byte[] data)
            {
                return BitConverter.ToString(data).Replace("-", "");
            }
            public static byte[] HexStringToBytesArray(string text)
            {
                text = text.Replace(" ", "");
                int l = text.Length;
                byte[] buffer = new byte[l / 2];
                for (int i = 0; i < l; i += 2)
                {
                    buffer[i / 2] = Convert.ToByte(text.Substring(i, 2), 16);
                }
                return buffer;
            }
        }
    }
    
    
  • 相关阅读:
    MVVM模式和在WPF中的实现(一)MVVM模式简介
    C#中实现并发的几种方法的性能测试
    搞笑:儿子的日记,叔叔妈妈
    MSN头像中小黄鸭子是什么?
    某人分析的70后,80后,90后
    有趣的纹身
    百度首页人物logo第一期:许三多
    关于微软Windows未来的一点畅想
    我把最难的21个汉字写进一篇文章
    百度还可以这样玩!
  • 原文地址:https://www.cnblogs.com/Microshaoft/p/1247584.html
Copyright © 2020-2023  润新知