深入学习ing

DES加密

DES加密是第一次使用,现在已经是一种过时的加密方式了,由于需求用到,这里列举一个示例:

核心代码:

复制代码
/// <summary>
/// DES加密
/// </summary>
/// <param name="data">加密字符串</param>
/// <param name="key">商户私钥</param>
/// <param name="iv">偏移量</param>
/// <returns></returns>
public static string DESEncrypt(string data, string key, string iv)
{
    //byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key.Substring(0,8));
    //byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
    //注意这里key最多只能有8位,超出8位自动截断
    byte[] byKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
    byte[] byIV = Encoding.UTF8.GetBytes(iv);

    DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
    cryptoProvider.Mode = CipherMode.CBC;
    cryptoProvider.Padding = PaddingMode.PKCS7;

    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);
}
复制代码

 

常见问题:Specified key is not a valid size for this algorithm.   (给出的key的长度大于8位导致的,代码里已经做了兼容,最多取8位)

也可以使用其他在线校验核对工具,跟代码生成数据进行比对:http://tool.chacuo.net/cryptdes

 

posted on   深入学习ing  阅读(351)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
历史上的今天:
2021-09-02 文件句柄占用卸载异常:Illegal or unimplemented ELEM_TYPE in signature
2020-09-02 debian_linux_apt-get命令_dpkg命令
2020-09-02 debian_linux系统_访问真实环境rancher_证书问题相关_https相关_使用kubectl命令行查看资源时报错:Unable to connect to the server: x509: certificate signed by unknown authority

导航

统计

点击右上角即可分享
微信分享提示