zoukankan      html  css  js  c++  java
  • 加解密

    代码
    //加密
    static String Encrypt(String pwd) {
    DESCryptoServiceProvider desc
    = new DESCryptoServiceProvider();//des进行加密
    PasswordDeriveBytes db = new PasswordDeriveBytes(pwd, null);//产生key
    byte[] key = db.GetBytes(8);
    MemoryStream ms
    = new MemoryStream();//存储加密后的数据
    CryptoStream cs = new CryptoStream(ms,desc.CreateEncryptor(key, key),CryptoStreamMode.Write);
    byte[] data = Encoding.Unicode.GetBytes(pwd);//取到密码的字节流
    cs.Write(data, 0, data.Length);//进行加密
    cs.FlushFinalBlock();
    byte[] res = ms.ToArray();//取加密后的数据
    return Encoding.Unicode.GetString(res);//转换到字符串返回
    }
    //解密:
    static String Decrypt(String pwd, String data) {
    DESCryptoServiceProvider desc
    = new DESCryptoServiceProvider();
    PasswordDeriveBytes db
    = new PasswordDeriveBytes(pwd, null);//产生key
    byte[] key = db.GetBytes(8);
    MemoryStream ms
    = new MemoryStream();//存储解密后的数据
    CryptoStream cs = new CryptoStream(ms,desc.CreateDecryptor(key, key),CryptoStreamMode.Write);
    byte[] databytes = Encoding.Unicode.GetBytes(data);//取到加密后的数据的字节流
    cs.Write(databytes, 0, databytes.Length);//解密数据
    cs.FlushFinalBlock();
    byte[] res = ms.ToArray();
    return Encoding.Unicode.GetString(res);//返回解密后的数据
    }
    //1、方法一 (不可逆加密)



    public string EncryptPassword(string PasswordString,string PasswordFormat )
    {
    string encryptPassword = null;
    if (PasswordFormat="SHA1"){
    encryptPassword
    =FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString

    ,
    "SHA1");
    }
    elseif (PasswordFormat
    ="MD5")
    { encryptPassword
    =FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString

    ,
    "MD5");
    }
    return encryptPassword ;
    }

    //2、方法二 (可逆加密)


    public interface IBindesh
    {
    string encode(string str);
    string decode(string str);
    }

    public class EncryptionDecryption : IBindesh
    {
    public string encode(string str)
    {
    string htext = "";

    for ( int i = 0; i < str.Length; i++)
    {
    htext
    = htext + (char) (str[i] + 10 - 1 * 2);
    }
    return htext;
    }

    public string decode(string str)
    {
    string dtext = "";

    for ( int i=0; i < str.Length; i++)
    {
    dtext
    = dtext + (char) (str[i] - 10 + 1*2);
    }
    return dtext;
    }


    //3、方法三 (可逆加密)



    const string KEY_64 = "VavicApp";//注意了,是8个字符,64位

    const string IV_64 = "VavicApp";
    public string Encode(string data)
    {
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

    DESCryptoServiceProvider cryptoProvider
    = new DESCryptoServiceProvider();
    int i = cryptoProvider.KeySize;
    MemoryStream ms
    = new MemoryStream();
    CryptoStream cst
    = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey,

    byIV), CryptoStreamMode.Write);

    StreamWriter sw
    = new StreamWriter(cst);
    sw.Write(data);
    sw.Flush();
    cst.FlushFinalBlock();
    sw.Flush();
    return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

    }

    public string Decode(string data)
    {
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

    byte[] byEnc;
    try
    {
    byEnc
    = Convert.FromBase64String(data);
    }
    catch
    {
    return null;
    }

    DESCryptoServiceProvider cryptoProvider
    = new DESCryptoServiceProvider();
    MemoryStream ms
    = new MemoryStream(byEnc);
    CryptoStream cst
    = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey,

    byIV), CryptoStreamMode.Read);
    StreamReader sr
    = new StreamReader(cst);
    return sr.ReadToEnd();
    }

    //4、MD5不可逆加密

    (32位加密)

    public string GetMD5(string s, string _input_charset)
    {

    /**//**//**//// <summary>
    /// 与ASP兼容的MD5加密算法
    /// </summary>

    MD5 md5
    = new MD5CryptoServiceProvider();
    byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));
    StringBuilder sb
    = new StringBuilder(32);
    for (int i = 0; i < t.Length; i++)
    {
    sb.Append(t[i].ToString(
    "x").PadLeft(2, '0'));
    }
    return sb.ToString();
    }
    // (16位加密)


    public static string GetMd5Str(string ConvertString)
    {
    MD5CryptoServiceProvider md5
    = new MD5CryptoServiceProvider();
    string t2 =

    BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)),
    4, 8);
    t2
    = t2.Replace("-", "");
    return t2;
    }

    //5、加解文本文件


    //加密文件
    private static void EncryptData(String inName, String outName, byte[] desKey, byte[]

    desIV)
    {
    //Create the file streams to handle the input and output files.
    FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
    FileStream fout
    = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
    fout.SetLength(
    0);

    //Create variables to help with read and write.
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
    long rdlen = 0; //This is the total number of bytes written.
    long totlen = fin.Length; //This is the total length of the input file.
    int len; //This is the number of bytes to be written at a time.

    DES des
    = new DESCryptoServiceProvider();
    CryptoStream encStream
    = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV),

    CryptoStreamMode.Write);

    //Read from the input file, then encrypt and write to the output file.
    while (rdlen < totlen)
    {
    len
    = fin.Read(bin, 0, 100);
    encStream.Write(bin,
    0, len);
    rdlen
    = rdlen + len;
    }

    encStream.Close();
    fout.Close();
    fin.Close();
    }

    //解密文件
    private static void DecryptData(String inName, String outName, byte[] desKey, byte[]

    desIV)
    {
    //Create the file streams to handle the input and output files.
    FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
    FileStream fout
    = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
    fout.SetLength(
    0);

    //Create variables to help with read and write.
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
    long rdlen = 0; //This is the total number of bytes written.
    long totlen = fin.Length; //This is the total length of the input file.
    int len; //This is the number of bytes to be written at a time.

    DES des
    = new DESCryptoServiceProvider();
    CryptoStream encStream
    = new CryptoStream(fout, des.CreateDecryptor(desKey, desIV),

    CryptoStreamMode.Write);

    //Read from the input file, then encrypt and write to the output file.
    while (rdlen < totlen)
    {
    len
    = fin.Read(bin, 0, 100);
    encStream.Write(bin,
    0, len);
    rdlen
    = rdlen + len;
    }

    encStream.Close();
    fout.Close();
    fin.Close();
    }

    //6、

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

    namespace Component
    {
    public class Security
    {
    public Security()
    {

    }

    //默认密钥向量
    private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
    /**//**//**//**//**//**//**//// <summary>
    /// DES加密字符串
    /// </summary>
    /// <param name="encryptString">待加密的字符串</param>
    /// <param name="encryptKey">加密密钥,要求为8位</param>
    /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
    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();
    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
    {
    return encryptString;
    }
    }

    /**//**//**//**//**//**//**//// <summary>
    /// DES解密字符串
    /// </summary>
    /// <param name="decryptString">待解密的字符串</param>
    /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
    /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
    public static string DecryptDES(string decryptString, string decryptKey)
    {
    try
    {
    byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
    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;
    }
    }


    }
    }
  • 相关阅读:
    2020年SpringBoot面试题
    Java自带的性能监测工具
    jvm怎么判断哪些对象应该回收呢
    IDEA版本破解
    透彻解析Java类加载机制
    C# DataGridView使用BindingNavigator实现简单分页功能
    C# DataGridView使用自定义控件实现简单分页功能
    C# DataGridView自动保存列的宽度和位置
    C# DataGridView右键菜单自定义显示及隐藏列
    转:C# String为值类型还是引用类型
  • 原文地址:https://www.cnblogs.com/yabbi/p/1714434.html
Copyright © 2011-2022 走看看