php descryptoserviceprovider,如何在asp.net中实现php里的crypt()函数

原有一套系统是使用php+mysql开发的,现在要新上一个项目在登录部分要用到原项目数据库中的数据,原mysql数据库中密码是用php的crypt()方法将用户密码加密后保存进数据库的。

如123456经php的crypt()加密后得到的结果是:“$1$ft3$VClxHjpQFd4ZwMC5.qRii/”,在CSDN上找到有相关的代码,但调试后有异常,异常位置在setEcn.Key

= inputByteArray2;处异常提示“指定键的大小对于此算法无效”。

恳请各位老师帮忙解决下这个问题。

CSDN代码:

///

/// 使用盐值进行三重加密

///

/// 要加密的字符串

/// 盐值

///

public static string EncryptString(string Value, string sKey)

{

try

{

ICryptoTransform ct;

MemoryStream ms;

CryptoStream cs;

byte[] byt;

SymmetricAlgorithm setEcn = new TripleDESCryptoServiceProvider();

byte[] inputByteArray = new byte[8];

Encoding.UTF8.GetBytes(sKey, 0, 8, inputByteArray, 0);

byte[] inputByteArray2 = Encoding.UTF8.GetBytes(sKey);

setEcn.IV = inputByteArray;

setEcn.Key = inputByteArray2;

ct = setEcn.CreateEncryptor(setEcn.Key, setEcn.IV);

byt = Encoding.UTF8.GetBytes(Value);

ms = new MemoryStream();

cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);

cs.Write(byt, 0, byt.Length);

cs.FlushFinalBlock();

cs.Close();

return Convert.ToBase64String(ms.ToArray());

}

catch (Exception e)

{

return "";

}

}

///

/// 获取盐值

///

///

public static string GenericSal()

{

byte[] buf = new byte[16];

(new RNGCryptoServiceProvider()).GetBytes(buf);

return Convert.ToBase64String(buf);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值