有好的对称加密算法吗,急求,越多越好

panhq2006 2009-01-21 05:26:11
论坛里的朋友们哪,谁有好的对称加密算法吗,这种对称算法可以让人随意的改变密钥长度,而且已经对一些不经常见的符号也可以同等加密处理,哪位朋友要是有可不可以把加密和解密算法都贴过来,这里多谢了。
...全文
506 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
John_Yang 2009-02-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 panhq2006 的回复:]
不是很懂密码学,不过我提的上面的那个确实密钥长度可以自由修改,不信可以试试
[/Quote]

那必然得做填充。对称加密算法的算法和密钥长度都是固定的,是国际标准。
panhq2006 2009-02-03
  • 打赏
  • 举报
回复
不是很懂密码学,不过我提的上面的那个确实密钥长度可以自由修改,不信可以试试
John_Yang 2009-02-02
  • 打赏
  • 举报
回复
晕。LZ你懂不懂密码学哦。
对称加密的密钥是固定长度的。
mail_ricklee 2009-02-02
  • 打赏
  • 举报
回复
http://www.cnblogs.com/mail-ricklee/archive/2009/01/20/1378729.html

FortuneBase中GDS系统包含四种对称加密算法

AlgorithmTypes.TripleDES;

AlgorithmTypes.Rijndael;

AlgorithmTypes.RC2;

AlgorithmTypes.BlowFish;
panhq2006 2009-02-02
  • 打赏
  • 举报
回复
public static string Encrypt3DES(string a_strString, string a_strKey)
{
TripleDESCryptoServiceProvider provider1 = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider provider2 = new MD5CryptoServiceProvider();
provider1.Key = provider2.ComputeHash(Encoding.Default.GetBytes(a_strKey));
provider1.Mode = CipherMode.ECB;
ICryptoTransform transform1 = provider1.CreateEncryptor();
byte[] buffer1 = Encoding.Default.GetBytes(a_strString);
return Convert.ToBase64String(transform1.TransformFinalBlock(buffer1, 0, buffer1.Length));
}

public static string Decrypt3DES(string a_strString, string a_strKey)
{

TripleDESCryptoServiceProvider provider1 = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider provider2 = new MD5CryptoServiceProvider();
provider1.Key = provider2.ComputeHash(Encoding.Default.GetBytes(a_strKey));
provider1.Mode = CipherMode.ECB;
ICryptoTransform transform1 = provider1.CreateDecryptor();
string text1 = "";
try
{
byte[] buffer1 = Convert.FromBase64String(a_strString);
text1 = Encoding.Default.GetString(transform1.TransformFinalBlock(buffer1, 0, buffer1.Length));
}
catch (Exception exception1)
{
throw new Exception("Invalid Key or input string is not a valid base64 string", exception1);
}
return text1;
}

可以试试,如果哪里有漏洞敬请提出
nihao955 2009-02-01
  • 打赏
  • 举报
回复
要饭还嫌馊!
yanlongwuhui 2009-02-01
  • 打赏
  • 举报
回复
关注中
csgdseed 2009-02-01
  • 打赏
  • 举报
回复
学习
蓝色木 2009-02-01
  • 打赏
  • 举报
回复
顶一下
hubblebubblepig 2009-02-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 panhq2006 的回复:]
我想要的是密钥可以随便修改的那种加密对称算法,不过我手里只有一个,...[/Quote]

把你那一个发来也给我们学习下吧
panhq2006 2009-02-01
  • 打赏
  • 举报
回复
上面的对称加密算法都经不起考验,都有其局限性,不是放到哪里都可以使用的,上面的加密算法大部分是密钥需要固定长度,一旦不固定就会出现无法执行的错误
gzMysky 2009-01-23
  • 打赏
  • 举报
回复
1楼正是
winner2050 2009-01-23
  • 打赏
  • 举报
回复
/// <summary>
/// 转换到Base64
/// </summary>
/// <param name="psClearString"></param>
/// <returns></returns>
public static string ToBase64(string psClearString)
{
byte[] data;
data = System.Text.ASCIIEncoding.ASCII.GetBytes(psClearString);
return Convert.ToBase64String(data);
}
/// <summary>
/// 从Base64还原
/// </summary>
/// <param name="ps64String"></param>
/// <returns></returns>
public static string FromBase64(string ps64String)
{
byte[] data;
data = Convert.FromBase64String(ps64String);
return System.Text.ASCIIEncoding.ASCII.GetString(data);
}

/// <summary>
/// 对称算法加密
/// </summary>
/// <param name="datastr">要加密的字符串</param>
/// <param name="keystr">加密钥匙串</param>
/// <returns>string</returns>
public static string Encrypt(string datastr, string keystr)
{
DESCryptoServiceProvider desc = new DESCryptoServiceProvider();//des进行加密
byte[] key = Encoding.Unicode.GetBytes(keystr);
byte[] data = Encoding.Unicode.GetBytes(datastr);
MemoryStream ms = new MemoryStream();//存储加密后的数据
CryptoStream cs = new CryptoStream(ms, desc.CreateEncryptor(key, key), CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);//进行加密
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());//取加密后的数据

}
/// <summary>
/// 对称算法解密
/// </summary>
/// <param name="datastr">要解密的字符串</param>
/// <param name="keystr">加密钥匙串</param>
/// <returns>string</returns>
public static string Decrypt(string datastr, string keystr)
{

System.Security.Cryptography.DESCryptoServiceProvider desc = new System.Security.Cryptography.DESCryptoServiceProvider();
byte[] key = Encoding.Unicode.GetBytes(keystr);
byte[] data = Convert.FromBase64String(datastr);
System.IO.MemoryStream ms = new System.IO.MemoryStream();//存储解密后的数据
CryptoStream cs = new CryptoStream(ms, desc.CreateDecryptor(key, key), CryptoStreamMode.Write);
cs.Write(data, 0, data.Length);//解密数据
cs.FlushFinalBlock();
return System.Text.Encoding.Unicode.GetString(ms.ToArray());

}
BossFriday 2009-01-23
  • 打赏
  • 举报
回复
一般对称的加码就是DES了.
不对称的不知道.
liujiayu10 2009-01-23
  • 打赏
  • 举报
回复
public static string CharacterToCoding(string character)
{
string coding = "";
for (int i = 0; i < character.Length; i++)
{
byte[] bytes = System.Text.Encoding.Unicode.GetBytes(character.Substring(i, 1)); //取出二进制编码内容
string lowCode = System.Convert.ToString(bytes[0], 16); //取出低字节编码内容(两位16进制)
if (lowCode.Length == 1)
lowCode = "0" + lowCode;
string hightCode = System.Convert.ToString(bytes[1], 16); //取出高字节编码内容(两位16进制)
if (hightCode.Length == 1)
hightCode = "0" + hightCode;
coding += (lowCode + hightCode); //加入到字符串中,
}
return coding;
}
public static string CodingToCharacter(string coding)
{
string characters = "";
if (coding.Length % 4 != 0) //编码为16进制,必须为4的倍数。
{
throw new System.Exception("编码格式不正确");
}
for (int i = 0; i < coding.Length; i += 4) //每四位为一个汉字
{
byte[] bytes = new byte[2];
string lowCode = coding.Substring(i, 2); //取出低字节,并以16进制进制转换
bytes[0] = System.Convert.ToByte(lowCode, 16);
string highCode = coding.Substring(i + 2, 2); //取出高字节,并以16进制进行转换
bytes[1] = System.Convert.ToByte(highCode, 16);
string character = System.Text.Encoding.Unicode.GetString(bytes);
characters += character;
}
return characters;
}
tm62490309 2009-01-23
  • 打赏
  • 举报
回复
帮顶
panhq2006 2009-01-23
  • 打赏
  • 举报
回复
我想要的是密钥可以随便修改的那种加密对称算法,不过我手里只有一个,希望可以得到更多更好一点的加密算法,一楼的加密算法,密钥必须是八位,如果短一点无法加密,长一点无法解密。这些离需要有点远,不过大家都尽心了,很感谢,过几天在结贴
hechenqingtian 2009-01-21
  • 打赏
  • 举报
回复
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

/// <summary>
/// EncryptString 的摘要说明
/// </summary>
public class EncryptString
{
public EncryptString()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

public string Access(string content, string password)
{
byte[] con = (new UnicodeEncoding()).GetBytes(content);
byte[] pass = (new UnicodeEncoding()).GetBytes(password);

for (int i = 0; i < con.Length; i += 2)
{
for (int j = 0; j < pass.Length; j += 2)
{
con[i] = Convert.ToByte(con[i]^pass[j]);
}
}

return (new UnicodeEncoding()).GetString(con).TrimEnd('\0');
}
}
wszhoho 2009-01-21
  • 打赏
  • 举报
回复
DES加密。
阿云ivan 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hs1983 的回复:]
C# code
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using Sy…
[/Quote]

正解
加载更多回复(1)

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧