java 写的 desc 解密方法怎么用 PHP 还原

问答 漫漫长路 ⋅ 于 7个月前 ⋅ 最后回复由 漫漫长路 7个月前 ⋅ 296 阅读

/// 解密数据
///
///
///
///
public static string Decrypt(string Text, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();//调一个desc的类
int len;//声明整数len的变量
len = Text.Length / 2;//把需要解密的字符长度除以2复制给len
byte[] inputByteArray = new byte[len];//声明数组长度为len 赋值给inputByteArray
int x, i;//声明整数x,i
for (x = 0; x < len; x++)
{
i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);//将密码字符串每次取两位在转化成32位的符号整数 再取其16 位有符号整数的值转换为等效的 32 位有符号整数。
inputByteArray[x] = (byte)i;//把得到的符号整数 赋给数组inputByteArray
}
des.Key = ASCIIEncoding.ASCII.GetBytes
(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile
(sKey, "md5").Substring(0, 8)); //把密钥进行MD5后,取字符串0到8位

        des.IV = ASCIIEncoding.ASCII.GetBytes
    (System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile
    (sKey, "md5").Substring(0, 8));//把密钥进行MD5后,取字符串0到8位

        System.IO.MemoryStream ms = new System.IO.MemoryStream();//应该也是调一个MemoryStream的类吧

        CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    //调CryptoStream类  并且传入参数 ms应该是执行的方式   des.CreateDecryptor() 用8位字符串
    创建对称解密器对象  CryptoStreamMode.Write  加密

        cs.Write(inputByteArray, 0, inputByteArray.Length);//上一步的结果解密后的数据放入内存流

        cs.FlushFinalBlock();//用缓冲区的当前状态更新基础数据源或储存库,随后清除缓冲区。

        return Encoding.UTF8.GetString(ms.ToArray());//按照UTF8的编码方式得到字符串
    }

我写的解释不晓得对不对 我想问下laravel里怎么代替里面的DESCryptoServiceProvider()方法 MemoryStream()方法 CryptoStream()方法

本文章首发在 Laravel China 社区
成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • @Summer 不好意思老大 第一次发 以为没发出去就多点了一下 后面找到其他方法了

    7个月前
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 250 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Composer 中文文档

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档