我知道我们可以使用以下行明确定义密钥。对于3des,密钥长度应为24字节,如果我没有错的话。
Dim Newkey() As Byte = Convert.FromBase64String("24 bytes enter here")
类似
Dim Newkey() As Byte = Convert.FromBase64String("c:\temp\mykey.pem")
答案 0 :(得分:1)
TripleDES.GenerateKey
,检索密钥属性。这将生成应与TripleDES兼容的密钥,然后调用Converter.ToBase64String
请查阅自己创建/阅读文本文件的教程,在文件名上使用FromBase64String将无效。
请注意,16字节键可用于TripleDES(ABA键)以及24字节(ABC)键。另请注意,DES中存在弱密钥,并且密钥包括奇偶校验位。大多数实现只是忽略奇偶校验位,但最好使用特殊的密钥生成函数来确保它们设置正确。
答案 1 :(得分:-2)
using System;
using System.Text;
using System.Security.Cryptography;
namespace Crypto
{
public class KeyCreator
{
public static void Main(String[] args)
{
String[] commandLineArgs = System.Environment.GetCommandLineArgs();
string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1]));
string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2]));
Console.WriteLine("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>", validationKey, decryptionKey);
}
static String CreateKey(int numBytes)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buff = new byte[numBytes];
rng.GetBytes(buff);
return BytesToHexString(buff);
}
static String BytesToHexString(byte[] bytes)
{
StringBuilder hexString = new StringBuilder(64);
for (int counter = 0; counter < bytes.Length; counter++)
{
hexString.Append(String.Format("{0:X2}", bytes[counter]));
}
return hexString.ToString();
}
}
}