Tag: encryption

bcrypt和随机产生的盐

所以我正在试验bcrypt。 我有一个类(下面显示,我从http://www.firedartstudios.com/articles/read/php-security-how-to-safely-store-your-passwords ),其中有3个function。 第一个是生成一个随机的Salt,第二个是使用第一个生成的Salt生成一个哈希值,最后一个是通过比较哈希密码来validation提供的密码。 <?php /* Bcrypt Example */ class bcrypt { private $rounds; public function __construct($rounds = 12) { if(CRYPT_BLOWFISH != 1) { throw new Exception("Bcrypt is not supported on this server, please see the following to learn more: http://php.net/crypt"); } $this->rounds = $rounds; } /* Gen Salt */ public function genSalt() { /* […]

密钥function与OpenSSL命令兼容?

例如,命令: openssl enc -aes-256-cbc -a -in test.txt -k pinkrhino -nosalt -p -out openssl_output.txt 输出类似于: key = 33D890D33F91D52FC9B405A0DDA65336C3C4B557A3D79FE69AB674BE82C5C3D2 iv = 677C95C475C0E057B739750748608A49 这个密钥是如何产生的? (C代码作为一个答案将太棒了,要求:))另外,如何生成iv? 看起来像是对我的一种hex。

为什么在CBC模式下使用非随机IV是一个漏洞?

我了解IV的目的。 特别是在CBC模式下,这确保了使用相同密钥encryption的第一个消息块将永远不会相同。 但是,如果IV是顺序的,为什么它是一个漏洞呢? 根据CWE-329非随机IV允许字典攻击的可能性。 我知道在实践中像WEP这样的协议不会隐藏IV。 如果攻击者拥有IV和密文信息,那么这将打开对密钥的字典攻击的大门。 我不明白随机四如何改变这一点。 (我知道对wep的攻击比这个更复杂。) 随机iv有什么安全优势? 这仍然是一个“理想分组密码”的问题? (一个完全安全的分组密码,没有任何缺点。)

为什么XOR是哈希合并的默认方式?

假设你有两个哈希H(A)和H(B) ,你想合并它们。 我已经读过,将两个哈希合并的一个好方法就是将它们XOR ,例如XOR( H(A), H(B) ) 。 我已经find了最好的解释,在这里简要地谈谈这些散列函数的指导方针 : 对两个数字进行大致随机分布的结果,导致另一个数字仍然具有大致随机分布*,但现在取决于这两个值。 … *在两个数字的每一位进行组合,如果两个位相等,则输出0,否则为1.换句话说,在50%的组合中,将输出1。 所以如果两个input比特各自有0或1的几率,那么输出比特也是如此。 你能解释为什么XOR应该成为哈希函数(而不是OR或AND等)的默认操作的直觉和/或math吗?

如何使用Python / PyCrypto以OpenSSL兼容的方式对文件进行AESencryption/解密?

有很多方法使用AES,导致不同实现之间频繁的不兼容。 OpenSSL为AESencryption/解密提供了一个stream行的(但不安全 – 见下文!)命令行界面: openssl aes-256-cbc -salt -in filename -out filename.enc openssl aes-256-cbc -d -in filename.enc -out filename Python以PyCrypto包的forms支持AES,但它只提供工具。 如何使用Python / PyCrypto来encryption文件,使用OpenSSL来解密文件,解密使用OpenSSLencryption的文件? 警告 这个encryptionscheme不好。 它不提供充分的安全性。 不要使用它,除非你绝对需要向后兼容。

如果fiddler 2可以通过HTTPS解密所有的电话,SSL的意义何在?

我在这里问了一个问题,回到如何隐藏我的http请求调用,并使其在我的应用程序中更安全。 我不希望人们使用小提琴手2看到电话,并build立一个自动回复。 每个人都告诉我去SSL,电话会隐藏起来,信息保持安全。 我购买并安装了一个SSL证书,并设置了一切。 我启动了fiddler 2并运行一个testing应用程序,连接到一个https web服务以及连接到一个https php脚本。 提琴手2不仅能够检测到这两个请求,但也解密它们! 我能够看到所有的信息,回到我的问题。 如果SSL与安全性没有什么区别,那么使用SSL有什么意义呢? 有或没有SSL我可以看到所有的信息回来和第四,仍然build立一个自动回复。 有没有.NET中的东西我想失去更好地隐藏我的电话通过SSL? 编辑 由于我收到了一些答复,我在这个问题上增加了一个新的部分。 如果一个应用程序连接到一个Web服务来login会怎么样? 该应用程序发送Web服务的用户名和密码。 然后,Web服务将数据发送回应用程序,说明login数据良好或不好。 即使通过SSL,使用小提琴手2的人也可以设置一个自动应答器,然后应用程序被“破解”。 我明白如何在debugging中看到数据是有用的,但是我的问题是确切地说应该确保SSL连接到正在请求的数据。 基本上说不能有一个中间人。

简单的方法来编码一个string根据密码?

Python是否有一个内置的,使用密码编码/解码string的简单方法? 像这样的东西: >>> encode('John Doe', password = 'mypass') 'sjkl28cn2sx0' >>> decode('sjkl28cn2sx0', password = 'mypass') 'John Doe' 所以string“John Doe”被encryption为“sjkl28cn2sx0”。 为了得到原始的string,我会用“mypass”这个密钥在我的源代码中“解锁”这个string。 我想这是我可以使用密码encryption/解密Word文档的方式。 我想使用这些encryption的string作为URL参数。 我的目标是混淆,不是强大的安全; 没有任何关键的编码。 我意识到我可以使用一个数据库表来存储键和值,但我试图是极简主义的。

如何在Android中使用AESencryptionSD卡中的文件?

我想从SD卡encryption图像,并使用AES再次将其存储在SD卡中。 主要思想是应用程序浏览图像,然后按下button时将其encryption,然后将其存储在SD卡中。 所以我的形象将是安全的。 我已经成功地使用AES从本教程http://www.androidsnippets.com/encryptdecrypt-strings做stringencryption,但我不知道如何做到这一点的图像,而不是string。 这是我如何用一个string: public static String encrypt(String seed, String cleartext) throws Exception { byte[] rawKey = getRawKey(seed.getBytes()); byte[] result = encrypt(rawKey, cleartext.getBytes()); return toHex(result); } private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(clear); return encrypted; […]

我应该select哪种密码散列函数?

.NET框架提供了6种不同的哈希algorithm: MD5:16字节(散列时间500MB:1462毫秒) SHA1:20个字节(1644毫秒) SHA256:32个字节(5618毫秒) SHA3​​84:48个字节(3839毫秒) SHA512:64个字节(3820毫秒) RIPEMD:20个字节(7066毫秒) 这些function中的每一个function都不相同 MD5是最快的,RIPEMD是最慢的。 MD5的优点是它适合内置的Guidtypes。 这使得它很容易用于识别。 然而,MD5很容易受到碰撞攻击 ,SHA1也是脆弱的,但程度较低。 我应该在什么条件下使用散列algorithm? 具体问题我真的很好奇,看到回答是: MD5不被信任? 在正常情况下,当你使用MD5algorithm而没有恶意的意图,没有任何第三方有任何恶意的意图时,你会期待任何冲突(意味着两个任意字节[]产生相同的散列) RIPEMD比SHA1好多less? (如果它更好)计算速度慢5倍,但散列大小与SHA1相同。 散列文件名(或其他短string)时获得非恶意冲突的几率是多less? (例如,具有相同MD5散列的2个随机文件名)(使用MD5 / SHA1 / SHA2xx)一般来说,非恶意冲突的几率是多less? 这是我使用的基准: static void TimeAction(string description, int iterations, Action func) { var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); } watch.Stop(); Console.Write(description); […]

encryptionURLvariables中的ID

我正在开发一个HTTP服务器应用程序(在PHP中,它恰好)。 我很担心在URL中出现表格ID。 是否可以encryptionURLvariables和值来保护我的应用程序?