| 发表于:2007-02-07 11:33:12 楼主 |
1)我下载了一个des加密解密的可执行文件,输入要求是16个字符,如 "1a1a111111111111 ",密钥也是16个字符,而且字符是在0-9、a-f的范围之内。并且每两个字符被认为是一个数字。请问:如果ab代表的数字是什么?如何换算? 2)我在网上看到一段c#的代码,密钥都要求是8个字符的,但加密出来的结果是一些比较奇怪的字符。如123用12345678加密后的结果是a1+4pwkl=acqy这样的形式的,怎么样才能让它输出为字符是在0-9、a-f的范围之内?并且密钥也改成输入为16个字符,程序把这16个字符转换成8位? 附:c#代码 //加密 public static string encode(string data, string key_64, string iv_64) { byte[] bykey = system.text.asciiencoding.ascii.getbytes(key_64); byte[] byiv = system.text.asciiencoding.ascii.getbytes(iv_64); descryptoserviceprovider cryptoprovider = new descryptoserviceprovider(); int i = cryptoprovider.keysize; 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); } //解密 public static string decode(string data) { byte[] bykey = system.text.asciiencoding.ascii.getbytes(key_64); byte[] byiv = system.text.asciiencoding.ascii.getbytes(iv_64); byte[] byenc; try { byenc = convert.frombase64string(data); } catch { return null; } descryptoserviceprovider cryptoprovider = new descryptoserviceprovider(); memorystream ms = new memorystream(byenc); cryptostream cst = new cryptostream(ms,cryptoprovider.createdecryptor(bykey,byiv),cryptostreammode.read); streamreader sr = new streamreader(cst); return sr.readtoend(); } |
|
|
|
|