zoukankan      html  css  js  c++  java
  • 自定义对1到15位长度的密码加解密

    示例效果 只是对1到15位长度的密码加解密

    将原明文进行ASCII码的增加转换 使其成为一个长度为16的字串 变相实现加密

    解密就是根据之前的转换思路 进行相关逆运算 得到原明文

    有需要的朋友 可以根据思路进行相关扩充

    以使其符合自已的需要

    #region 对1-15位明文加密
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strToEncrypt = this.txt_明文.Text.Trim();
        this.txt_加密.Text = Encrypt(strToEncrypt);
    }
    #endregion

    #region 解密
    protected void Button2_Click(object sender, EventArgs e)
    {
        string strToDecrypt = this.txt_加密.Text.Trim();
        this.txt_解密.Text = Decrypt(strToDecrypt);
    }
    #endregion

    int intA = 11;
    int intB = 19;

    #region 加密 返回加密后的字串
    private string Encrypt(string strToEncrypt)
    {
        //先对原明文的长度进行相关判断 使其符合1-15这个范围       
        string strEncrypted = "";
        //利用原明文长度 将其做为加密后密码的第1位
        strEncrypted += (char)(Convert.ToString(strToEncrypt.Length, 16)[0] - intA);
        //      
        for (int i = 0; i < strToEncrypt.Length; i++)
        {
            //32-126
            int intNewChar = strToEncrypt[i] + intB;
            if (intNewChar > 126)
            {
                intNewChar = intNewChar - 127 + 32;
            }
            strEncrypted += Convert.ToChar(intNewChar).ToString();
        }

        if (strEncrypted.Length < 16)
        {
            string strEncrypted2 = "";
            string strTemp = Guid.NewGuid().ToString().Substring(0, (16 - strEncrypted.Length));
            //
            for (int j = 0; j < strTemp.Length; j++)
            {
                if (j < strEncrypted.Length)
                    strEncrypted2 += strEncrypted[j].ToString();
                strEncrypted2 += strTemp[j].ToString();
            }
            if (strTemp.Length < strEncrypted.Length)
                strEncrypted2 += strEncrypted.Substring(strTemp.Length);

            strEncrypted = strEncrypted2;
        }
        //返回加密后字串
        return strEncrypted;
    }
    #endregion

    #region 解密 返回解密后的字串
    private string Decrypt(string strToDecrypt)
    {       
        string strLength = Convert.ToString((char)(strToDecrypt[0] + intA));
        int intPwdLength = Convert.ToInt32(strLength, 16);
        string strDecrypted = "";
        for (int i = 1; i < strToDecrypt.Length; i++)
        {
            //32-126
            int intOldChar = strToDecrypt[i] - intB;
            if (intOldChar < 32)
            {
                intOldChar = intOldChar - 32 + 127;
            }
            strDecrypted += Convert.ToChar(intOldChar).ToString();
        }

        string strDecrypted2 = "";
        for (int j = 1; j < strDecrypted.Length; j = j + 2)
        {
            strDecrypted2 += strDecrypted[j].ToString();
        }
        //
        if (intPwdLength < 8)
        {
            strDecrypted = strDecrypted2.Substring(0, intPwdLength);
        }
        else
        {
            strDecrypted = strDecrypted2.Substring(0, 15 - intPwdLength) + strDecrypted.Substring((15 - intPwdLength) * 2);
        }
        //返回解密后字串
        return strDecrypted;
    }
    #endregion

  • 相关阅读:
    Linux的用户和组的属性
    Linux文件/目录 的新建、复制、移动(更名)、删除、查看、压缩命令
    排序算法和实现
    面试-三三原则
    phpstudy 最新版linux 面板 web防火墙后门防护功能教程
    小白必看的Python爬虫流程
    Python3迭代器与生成器
    python的异常处理机制
    python变量的作用域
    值得收藏的Python第三方库
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1260855.html
Copyright © 2011-2022 走看看