在Swing中,密码字段具有getPassword()(返回char[])方法而不是通常getText()(返回String)方法.同样,我遇到了一个不使用String来处理密码的建议.
为什么String在密码方面会对安全构成威胁?使用感觉不方便char[].
我不时听到"使用bcrypt在PHP中存储密码,bcrypt规则"的建议.
但是什么bcrypt呢?PHP没有提供任何此类功能,维基百科关于文件加密实用程序的唠叨和Web搜索只是揭示了不同语言的Blowfish的一些实现.现在Blowfish也可以通过PHP获得mcrypt,但是如何帮助存储密码?Blowfish是一种通用密码,它有两种工作方式.如果它可以加密,则可以解密.密码需要单向散列函数.
解释是什么?
目前据说MD5部分不安全.考虑到这一点,我想知道用于密码保护的机制.
这个问题,"双重哈希"密码是否比仅仅哈希一次更安全? 建议多次散列可能是一个好主意,而如何实现单个文件的密码保护?建议使用盐.
我正在使用PHP.我想要一个安全快速的密码加密系统.散列密码一百万次可能更安全,但也更慢.如何在速度和安全性之间取得良好的平衡?另外,我更喜欢结果具有恒定数量的字符.
另外,我应该在数据库中存储两个字段(例如,一个使用MD5,另一个使用SHA)?它会使它更安全或更不安全吗?
如果我不够清楚,我想知道使用哪种散列函数以及如何选择好的盐以便拥有安全和快速的密码保护机制.
相关问题并不完全涵盖我的问题:
PHP中的SHA和MD5有什么区别
简单密码加密
存储密钥的安全方法,asp.net的密码
如何在Tomcat 5.5中实现salted密码
我正在为"A"生成一个8个字符的伪随机大写字符串."Z":
value = ""; 8.times{value << (65 + rand(25)).chr}
Run Code Online (Sandbox Code Playgroud)
但它看起来并不干净,并且它不能作为参数传递,因为它不是单个语句.要获得一个混合大小写的字符串"a".."z"加上"A".."Z",我将其更改为:
value = ""; 8.times{value << ((rand(2)==1?65:97) + rand(25)).chr}
Run Code Online (Sandbox Code Playgroud)
但它看起来像垃圾.
有没有人有更好的方法?
我被要求更新一些Excel 2003宏,但VBA项目受密码保护,似乎缺少文档......没有人知道密码.
有没有办法删除或破解VBA项目的密码?
我正在开发一个必须具有身份验证(用户名和密码)的项目
它还连接到数据库,所以我想我会在那里存储用户名和密码.但是,将密码仅仅放在数据库中的表中的文本字段似乎不是一个好主意.
我正在使用C#并连接到2008 Express服务器.任何人都可以(尽可能多的例子)建议存储此类数据的最佳方法是什么?
PS我很乐意这样的想法,如果可以提供一个很好的理由,这些信息不会存储在数据库中
为政府医疗保健机构工作的乐趣之一就是必须处理与处理PHI(受保护的健康信息)有关的所有偏执.不要误会我的意思,我尽一切可能保护人们的个人信息(健康,经济,上网习惯等),但有时人们会有点过于兴奋.
例证:我们的一位州客户最近发现浏览器提供了保存密码的便利功能.我们都知道它已经存在了一段时间并且是完全可选的,并且由最终用户决定是否使用或不使用它.然而,目前有一点骚动,我们被要求找到一种方法来禁用我们网站的功能.
问题:网站是否有办法告诉浏览器不要提供密码?我很长一段时间都在网络开发,但不知道我之前遇到过这种情况.
任何帮助表示赞赏.
我们刚刚将Visual Studio 2008项目升级到Visual Studio 2010.我们使用Verisign代码签名证书对所有程序集进行了强签名.自升级以来,我们不断收到以下错误:
无法导入以下密钥文件:companyname.pfx.密钥文件可能受密码保护.要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_KEY_3E185446540E7F7A
这种情况发生在一些开发者机器而不是其 用于解决此问题的一些方法在某些时候起作用包括:
我已经尝试使用SN.EXE实用程序(强名称工具)来注册具有强名称CSP的密钥,如错误消息所示,但每当我使用Visual Studio 2010附带的版本运行任何选项的工具时,SN .EXE只列出其命令行参数而不是执行任何操作.无论我提供什么参数,这都会发生.
为什么会发生这种情况,以及解决这个问题的明确步骤是什么?我即将放弃ClickOnce安装和Microsoft代码签名.
我需要实现256位AES加密,但我在网上找到的所有示例都使用"KeyGenerator"生成256位密钥,但我想使用自己的密码.如何创建自己的密钥?我已经尝试将其填充为256位,但后来我得到一个错误,说密钥太长了.我确实安装了无限管辖区补丁,所以那不是问题:)
IE浏览器.KeyGenerator看起来像这样......
// Get the KeyGenerator
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128); // 192 and 256 bits may not be available
// Generate the secret key specs.
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
Run Code Online (Sandbox Code Playgroud)
编辑
我实际上是将密码填充到256个字节,而不是位,这太长了.以下是我现在使用的一些代码,我对此有更多的经验.
byte[] key = null; // TODO
byte[] input = null; // TODO
byte[] output = null;
SecretKeySpec keySpec = null;
keySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
output = cipher.doFinal(input)
Run Code Online (Sandbox Code Playgroud)
您需要自己做的"TODO"位:-)
passwords ×10
security ×4
cryptography ×2
java ×2
php ×2
aes ×1
autocomplete ×1
bcrypt ×1
browser ×1
char ×1
database ×1
encryption ×1
excel ×1
hash ×1
openssh ×1
passphrase ×1
pfx ×1
protection ×1
random ×1
ruby ×1
ssh ×1
string ×1
unix ×1
vba ×1