问题描述
哪位大神帮忙看看pbkdf2加密问题密码:123456salt:a3xfJQ4X9ynk0kfYt4SPPA==由于新老系统切换,老系统用的是Node.js加密方法crypto.pbkdf2Sync(password,salt,10000,64),加密出来的密码是:GDLavfTOzNAG/DoWKJQ89H9S7nqPqA9wK8rgGFrydvpDTLCLkAWznf7akHXZqUELBmLywUcLhdXMB6iglZcUWw==我在.net中方法为:Rfc2898DeriveBytesk3=newRfc2898DeriveBytes(password,System.Text.UTF8Encoding.Default.GetBytes("a3xfJQ4X9ynk0kfYt4SPPA=="),10000);byte[]answers=k3.GetBytes(64);varpwd=Convert.ToBase64String(answers)结果密码为:T+xVcJJkLR0Q8UC+2EVUIEShvik4jGmyyC4/8hUAdbxEQKVHMnGSSo1yTHmi8B0JwCI5nLGdC4qwabkh5oadJA==
解决方案
解决方案二:
把System.Text.UTF8Encoding.Default.GetBytes("a3xfJQ4X9ynk0kfYt4SPPA==")改为Convert.FromBase64String("a3xfJQ4X9ynk0kfYt4SPPA==")stringpassword="123456";intmyIterations=10000;//Createabytearraytoholdtherandomvalue.//byte[]saltBytes=newbyte[8];//using(RNGCryptoServiceProviderrngCsp=newRNGCryptoServiceProvider())//{////Fillthearraywitharandomvalue.//rngCsp.GetBytes(saltBytes);//}byte[]saltBytes=Convert.FromBase64String("a3xfJQ4X9ynk0kfYt4SPPA==");Rfc2898DeriveBytespasswordEncryptedBytes=newRfc2898DeriveBytes(password,saltBytes,myIterations);stringsalt=Convert.ToBase64String(saltBytes);stringpasswordEncrypted=Convert.ToBase64String(passwordEncryptedBytes.GetBytes(64));Console.WriteLine(salt);Console.WriteLine(passwordEncrypted);Console.ReadLine();