标签: blowfish

从Diffie-Hellman输出中选择加密密钥

我在Java中使用RFC 3526中的一些大型组实现了Diffie-Hellman密钥交换.我的输出是一个相当大的字节数组.使用河豚键的输出的前448位(56字节)是否安全?我应该以任何方式转换字节,还是选择密钥的任何特定字节?

java encryption blowfish diffie-hellman

5
推荐指数
1
解决办法
2218
查看次数

最好的Blowfish命令行工具?

我们的应用程序需要使用(例如)Blowfish加密算法来加密/解密文件.我们知道bcrypt可能是一个不错的选择,但不能直接从我们的应用程序调用它(因为它提示关键短语).

哪个是现有的最佳选择?

我们更喜欢Windows工具,不过Linux也会很好.

encryption command-line blowfish

5
推荐指数
1
解决办法
1万
查看次数

用nodejs加密和php的mcrypt解密blowfish-ecb

我正在尝试使用内置的加密库解码Node.js中的以下base64编码的密文

2tGiKhSjSQEjoDNukf5BpfvwmdjBtA9kS1EaNPupESqheZ1TCr5ckEdWUvd+e51XWLUzdhBFNOBRrUB5jR64Pjf1VKvQ4dhcDk3Fdu4hyUoBSWfY053Rfd3fqpgZVggoKk4wvmNiCuEMEHxV3rGNKeFzOvP/P3O5gOF7HZYa2dgezizXSgnnD6mCp37OJXqHuAngr0pps/i9819O6FyKgu6t2AzwbWZkP2sXvH3OGRU6oj5DFTgiKGv1GbrM8mIrC7rlRdNgiJ9dyHrOAwqO+SVwzhhTWj1K//PoyyzDKUuqqUQ6AvJl7d1o5sHNzeNgJxhywMT9F10+gnliBxIg8gGSmzBqrgwUNZxltT4uEKz67u9eJi59a0HBBi/2+umzwOCHNA4jl1x0mv0MhYiX/A==
Run Code Online (Sandbox Code Playgroud)

它似乎与PHP的mcrypt函数一起使用字符串typeconfig.sys^_-作为键,如将值输入到http://www.tools4noobs.com/online_tools/decrypt/并选择Blowfish,ECB,Base64 decode所示.

但是,当我在Node.js中运行以下代码时:

var crypto = require('crypto');
var data = "2tGiKhSjSQEjoDNukf5BpfvwmdjBtA9kS1EaNPupESqheZ1TCr5ckEdWUvd+e51XWLUzdhBFNOBRrUB5jR64Pjf1VKvQ4dhcDk3Fdu4hyUoBSWfY053Rfd3fqpgZVggoKk4wvmNiCuEMEHxV3rGNKeFzOvP/P3O5gOF7HZYa2dgezizXSgnnD6mCp37OJXqHuAngr0pps/i9819O6FyKgu6t2AzwbWZkP2sXvH3OGRU6oj5DFTgiKGv1GbrM8mIrC7rlRdNgiJ9dyHrOAwqO+SVwzhhTWj1K//PoyyzDKUuqqUQ6AvJl7d1o5sHNzeNgJxhywMT9F10+gnliBxIg8gGSmzBqrgwUNZxltT4uEKz67u9eJi59a0HBBi/2+umzwOCHNA4jl1x0mv0MhYiX/A==";
var decipher = crypto.createDecipher('bf-ecb', 'typeconfig.sys^_-');
data = decipher.update(data, "base64", "utf8");
data += decipher.final("utf8");
console.log(data);
Run Code Online (Sandbox Code Playgroud)

我得到垃圾输出:

y
?:????d?(????Q?i??z1??4?? ?k?(? ??a5????u??73c/??(???)????????f????
                                                              ?ec?-<z?8????(?-L?????I??1L*??u?4?j-??h?@\P)???.?^???q??U???W&?x??85?T-?9,dE<g}?`*?
??|@????k"?!?D'u???,x??7????
                 ??9q=q?q???>?w?T????H3??i)R??zy??C??
                                                    ??o?
Run Code Online (Sandbox Code Playgroud)

我也尝试过对库本身的测试,因为它似乎能够处理它自己编码的东西:

var crypto = require('crypto')
var cipher = crypto.createCipher("bf-ecb", "key");
var data = cipher.update("foobar", "utf8", "base64");
data += cipher.final("base64");
console.log(data);
var decipher = crypto.createDecipher("bf-ecb", "key");
data = decipher.update(data, "base64", "utf8");
data += decipher.final("utf8");
console.log(data);
Run Code Online (Sandbox Code Playgroud)

生产:

y0rq5pYkiU0=
foobar
Run Code Online (Sandbox Code Playgroud)

但复制并粘贴base64字符串并将其输入http://www.tools4noobs.com/online_tools/decrypt/以及键"key"也会产生垃圾输出. …

encryption blowfish mcrypt ecb node.js

5
推荐指数
1
解决办法
4538
查看次数

河豚花费与时间的关系

我在php中使用bcrypt/blowfish,当我将cost参数设置为$ 10(我认为1024轮)时,加密过程需要0.1秒.如果我将它设置为12美元,则需要0.3秒.我的问题是:这是否占用了0.3秒的CPU时间,即如果我有100个用户正在运行此过程,它们是否都需要等待30秒(0.3 x 100)?(编辑:由于双核/多线程处理可能会更短,但即使10秒也是不可接受的).

另外:保留此成本参数有什么好处?有些人推荐16美元,但我的网站上需要5秒钟(由大型虚拟主机托管).

顺便说一句,我使用以下代码来检查它所需的时间:

<?php
// set a password to work with
$var1 = "doodoo1234";

//echo that password onto the screen 
echo $var1 . "<br /><br />";

//Start the clock
$time_start = microtime(true);

//Run blowfish function to encrypt the password
$hashedpass = PassHash::blowfishhash($var1);

//stop the clock  
$time_end = microtime(true);

//echo the password to the screen
echo $echohashedpass . "<br /><br />";

//Echo the length of the encrypted password to the screen
//(this taught me that blowfish always returns …
Run Code Online (Sandbox Code Playgroud)

php passwords time blowfish

5
推荐指数
1
解决办法
2926
查看次数

Blowfish和Blowfish-compat有什么区别?

我似乎无法找到差异的来源.我在这个在线解密工具中发现了这种差异

http://www.tools4noobs.com/online_tools/decrypt/

我有一些加密的Blowfish数据,我试图通过Python的PyCrypto模块解密.然而,问题是数据似乎是用"blowfish-compat"加密的,因为这是通过在线工具解密它所需要的; 我不能通过PyCrypto的模块解密它,我收集它严格使用Blowfish解密(而不是Blowfish-compat,不管是什么).

有可能以某种方式通过Python解密blowfish-compat吗?我不知道两者之间的区别.

python encryption blowfish mcrypt

5
推荐指数
1
解决办法
2206
查看次数

在PHP中加密和解密密码,文件的完美方式?

我对这个主题进行了一系列研究,但遗憾的是我找不到用PHP加密和解密文件的完美方法.这意味着我正在尝试做的是找到一些方法来加密和解密我的项目,而不用担心破解者知道我的算法.如果某些算法需要分泌和隐藏,当它通过任何地方共享逻辑时,它无法解决我的问题,或者它们闯入我的服务器并获取源文件,那么它应该是某种方式使用相同的解密来解密它算法.以前我在StackOverFlow网站上发现了几篇很棒的帖子,但它仍然无法回答我的问题.

从我通过阅读得出的结论来加密世界密码的最佳方式.Blowfish加密.这是一种具有1000次迭代的散列算法,这使得破解者需要7年才能使用相同规格的GPU进行解密.

显然,这使得在单向散列时无法解密.

  1. 如何在PHP中使用bcrypt进行散列密码?
  2. 为什么盐使字典攻击"不可能"?

在PHP中加密和解密密码的最佳方法,因为这个问题引用它.参考我通过网络发现的内容,sha1和md5都是破解和破解算法,甚至我们改变了算法

$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
Run Code Online (Sandbox Code Playgroud)

$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, sha1(md5($key)), $string, MCRYPT_MODE_CBC, sha1(md5(md5($key)))));
Run Code Online (Sandbox Code Playgroud)

是不是只是增加了解密它的韧性,但在时间问题上仍然可以破解?

  1. 使用PHP加密和解密密码的最佳方法?

我正在考虑使用我们的服务器处理器/硬盘GUID来生成salt并加密密码.

当cracker获得对服务器的访问时,它仍然是一些愚蠢的方法,他们可以使用PHP来回显GUID并进行解密.或者,如果它有效,几年后我的网站将遇到麻烦.原因是硬盘,处理器永远不会永远存在.当我的处理器或硬盘下来时,这是我的网站关闭并丢失所有凭据的时间.

更新

发现这个问题在PHP中使用blowfish进行解密.它是否正在解决找到加密的安全方式并且难以被其他人解密的问题?

  1. 如何在php中使用Blowfish算法解密?

任何人都可以建议我应该如何克服这个问题?谢谢.

php encryption codeigniter blowfish file

5
推荐指数
3
解决办法
2万
查看次数

PHP crypt()Blowfish功能不起作用

这是我第一次在PHP中使用crypt()函数,我无法弄清楚它为什么不起作用.我的代码基于这篇文章:http://www.techrepublic.com/blog/australia/securing-passwords-with-blowfish/1274

function blowfishHash ($pw) {
   //generate random salt
   $salt = "$2y$10$";
   for ($i = 0; $i < 22; $i++) {
       $salt .= substr("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", mt_rand(0, 63), 1);
   }
  $hash = crypt($pw, $salt);

  //printout to file
  $file = fopen("debug.txt", "w+");
  fwrite($file, "\n\n\n".$pw);
  fwrite($file, "\n\n\n".$salt);
  fwrite($file, "\n\n\n".$hash);
  fclose($file);

  return $hash;
}
Run Code Online (Sandbox Code Playgroud)

我使用示例密码"password"调用了该函数.

由此产生的盐是:$2y$10$NzRQNjTRfP4jXKvb4TCO.G
但密码是"$2mV0NZp92R3g"- 这似乎太短了.

有人可以帮我弄清楚我做错了什么吗?

php crypt blowfish bcrypt

5
推荐指数
1
解决办法
4734
查看次数

打破224位Blowfish加密

我有一堆加密文件,我想解密(呃).经过一些研究,我发现他们使用224位密钥用Blowfish加密.我知道明文的前几个字节是什么样的(它是一种标题).

注意到我不是NSA,也没有荒谬的计算能力,我是否有机会在合理的时间内强行关键(例如:不是宇宙的生命)?

我在某处读到有人发布了对完整的Blowfish(没有双关语)的攻击,将搜索范围缩小到2 ^(n/2),但它神秘地消失了.显然这是某种MITM攻击; 虽然Blowfish使用16轮Feistel网络,但如果它存在,它必须是聪明的.谁能证实这一点?

编辑:我确实可以访问大量使用的密钥,而不是所有密钥.也许我尝试攻击密钥的生成更有价值吗?

security encryption blowfish brute-force

4
推荐指数
1
解决办法
3843
查看次数

Python Blowfish加密

由于我对Java的不完全了解将这个加密代码转换为Python代码,我正在努力.两者应该具有完全相同的结果.非常感谢帮助.

Java函数

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;


class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String s = "testings";
        Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
        Key key = new SecretKeySpec("6#26FRL$ZWD".getBytes(), "Blowfish");
        cipher.init(1, key);
        byte[] enc_bytes = cipher.doFinal(s.getBytes());
        System.out.println(enc_bytes);
    }
}
Run Code Online (Sandbox Code Playgroud)

Python等价

def PKCS5Padding(string):
    byteNum = len(string)
    packingLength = 8 - byteNum % 8
    if packingLength == 8:
        return string
    else:
        appendage = chr(packingLength) * packingLength
        return string + appendage

def PandoraEncrypt(string):
    from Crypto.Cipher import Blowfish
    key = …
Run Code Online (Sandbox Code Playgroud)

python java encryption blowfish ecb

4
推荐指数
1
解决办法
4519
查看次数

用CakePHP和河豚改变密码

我正在尝试设置一个表单,允许用户使用CakePHP 2.3更改密码.使用的算法是河豚.我有以下三个字段:

<?php echo $this->Form->input('old_password', array('type' => 'password', 'autocomplete' => 'off')); ?>
<?php echo $this->Form->input('new_password', array('type' => 'password', 'autocomplete' => 'off')); ?>
<?php echo $this->Form->input('new_password_confirm', array('type' => 'password', 'autocomplete' => 'off', 'label' => 'Confirm Password')); ?>
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试验证他们正确输入旧密码的代码:

$hash = Security::hash($this->request->data['User']['old_password'], 'blowfish');
$correct = $this->User->find('first', array(
    'conditions' => array(
        'User.id' => AuthComponent::user('id'),
        'User.password' => $hash
    ),
    'fields' => array('id')
));
Run Code Online (Sandbox Code Playgroud)

问题是即使我正确输入旧密码,Cake也找不到用户,因为它似乎没有计算正确的哈希值.每次我使用相同的旧密码提交表单时,Cake每次都会生成一个不同的哈希值.这可能是由于我对blowfish/bcrypt算法的工作方式缺乏了解,但我似乎无法弄明白.

我在这里错过了什么?

cakephp blowfish bcrypt cakephp-2.0

4
推荐指数
1
解决办法
2980
查看次数