关于数据库保存信用卡号码

stevenhzhang 2009-12-17 05:10:23
由于项目需要保存客户信用卡密码在数据库(MS SQL),肯定不能明文

1、客户上传信用卡号码,加密保存数据库
2、客户账户信息,只显示信用卡最后4位 (*****1234)
3、在管理端,需要显示客户完整的信用卡号码

谁能给一个好点的解决方案?

譬如:
对称算法:DES、 TripleDES和Rijndael
不对称算法:RSA、DSA

我也是临时抱佛脚刚找来的,可能还有其他算法,用哪个比较适合?

有人能给点建议吗?
...全文
139 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenhzhang 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lovely_baby 的回复:]
http://blog.csdn.net/niuyongjie/archive/2009/01/08/3733267.aspx
LOOK~~
[/Quote]

受教了。

因为传递数据都是在https之间传输,传输是安全的,我想可能不需要公钥和密钥

本地加密只要对称加密,从DES、 TripleDES和Rijndael选一种,

这种想法对吗?
stevenhzhang 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ihandler 的回复:]
sha1 加密解密
有能力的话 自己写加密算法
[/Quote]

呵呵,我的能力太小了

stevenhzhang 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 igelf 的回复:]
网上找的.很多.
[/Quote]

就是因为太多,不知道选哪个好。

希望有做过的,给点建议。
igelf 2009-12-17
  • 打赏
  • 举报
回复
网上找的.很多.
limii 2009-12-17
  • 打赏
  • 举报
回复
up
IHandler 2009-12-17
  • 打赏
  • 举报
回复
sha1 加密解密
有能力的话 自己写加密算法
stevenhzhang 2009-12-17
  • 打赏
  • 举报
回复
谢谢楼上,能说一下,你的加密是属于那种技术吗?
igelf 2009-12-17
  • 打赏
  • 举报
回复

public class DESEncrypt
{
/// <summary>
/// 解密
/// </summary>
/// <param name="text"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string Decrypt(string text, string key)
{
DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();
int num1 = text.Length / 2;
byte[] buffer1 = new byte[num1];
for (int num2 = 0; num2 < num1; num2++)
{
int num3 = Convert.ToInt32(text.Substring(num2 * 2, 2), 0x10);
buffer1[num2] = (byte)num3;
}
provider1.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").Substring(0, 8));
provider1.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").Substring(0, 8));
MemoryStream stream1 = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream1, provider1.CreateDecryptor(), CryptoStreamMode.Write);
stream2.Write(buffer1, 0, buffer1.Length);
stream2.FlushFinalBlock();
return Encoding.Default.GetString(stream1.ToArray());
}

/// <summary>
/// 加密
/// </summary>
/// <param name="text"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string Encrypt(string text, string key)
{
DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();
byte[] buffer1 = Encoding.Default.GetBytes(text);
provider1.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").Substring(0, 8));
provider1.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").Substring(0, 8));
MemoryStream stream1 = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream1, provider1.CreateEncryptor(), CryptoStreamMode.Write);
stream2.Write(buffer1, 0, buffer1.Length);
stream2.FlushFinalBlock();
StringBuilder builder1 = new StringBuilder();
foreach (byte num1 in stream1.ToArray())
{
builder1.AppendFormat("{0:X2}", num1);
}
return builder1.ToString();
}
}

stevenhzhang 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ihandler 的回复:]
除了银行,客户会把信用卡密码暴漏?
[/Quote]

客户是不是会把信用卡暴露,这是另一话题

撇开信用卡号码,简单一点说,就是现在需要把一个数据加密保存,需要的时候,还能读出来

想请教一下在.Net环境下用什么方式比较好
IHandler 2009-12-17
  • 打赏
  • 举报
回复
除了银行,客户会把信用卡密码暴漏?
exiori 2009-12-17
  • 打赏
  • 举报
回复
这信息保证是加密的

62,243

社区成员

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

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

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

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