问题标签 [blowfish]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 Blowfish NET 的 C# 问题:如何从 Uint32[] 转换为 byte[]
在 C# 中,我使用 Blowfish.NET 2.1.3 的 BlowfishECB.cs 文件(可以在这里找到)
在 C++ 中,它是未知的,但它是相似的。
在 C++ 中,Initialize(blowfish) 过程如下:
在 C# 中,Initialize(blowfish) 过程是相同的
这就是问题:
这就是在 C++ 中初始化密钥的方式
如您所见,键是一个由两个 DWORD 组成的数组,总共 8 个字节。
在 C# 我这样声明它,但我得到一个错误
错误是:
参数 '1':无法从 'uint[]' 转换为 'byte[]'
我究竟做错了什么?
提前致谢!
c# - C# 中的河豚
我的 C++ 程序使用标准的河豚。
我的 C# 程序从这里使用 Blowfish 加密算法。
两个应用程序(TCP 客户端)都做同样的事情:接收数据包,对其进行加密,然后将其发回。如果服务器将数据包识别为正常 - 它会发送另一个数据包,否则它会关闭套接字。我遵循了 C++ 和 C# 中的所有函数,除了加密之外,一切都是一样的。
在 C++ 文件中,我只有一种加密。但是,在 C# Blowfish 我有
- 河豚
- 河豚CFB
- 河豚欧洲央行
- 河豚简单
我不知道我的 C++ 项目中是哪一个,所以我随机选择了BlowfishECB
. 但它不起作用,服务器(我无权访问它)无法将数据包识别为加密。
我的问题:C# 是否有标准的 Blowfish,或者如果这是唯一的,我该如何解决这个问题? 编辑:
C++ 河豚代码可以在这里看到。
c# - C#:Blowfish 不能使用更少的字母
我正在使用 Blowfish.NET 最新版本,但有一个问题。
我用正确的方式称呼它,我希望它从第三个字节开始读/写,长度为 6 - 2,因为我不使用两个字节。
问题:
如果我传递更长的数据,河豚工作正常,但我需要加密这个。我们找到了问题,但我的问题是:如何解决它?!
c# - C++ 河豚可以使用更少的字母,但 C# 河豚不能
C++ 河豚支持加密少于 8 个字母的块,而 .NET 不支持。为什么?
-->C# NET Blowfish<-- -->C++ Blowfish<--
在 C++ 和 C# 应用程序中,我加密了以下数组
在 C++ 和 C# 应用程序中,我使用相同的参数调用 Encrypt 函数。
但是,在 C++ 中,我得到了加密的数据,但不是在 C# 中。
C# NET Blowfish中的第 45,47 和 49行是有问题的行,在第 45 行计算后 - 结果变为 0。第 47 行变为 2 + 0 = 2 并且第 49 行 2 不小于 2,因此没有循环。
C ++河豚中有一些填充,但是当我尝试理解它时我迷路了。
我的问题是,在 C# 中,填充必须与 C++ 中的完全相同,所以我得到了一个有效的答案。我不能使用随机填充然后在解密后删除无用的字节,因为我发送加密数组的服务器是不是我的。
您能否指出 C++ 河豚中使用了哪些填充以及如何在 C# NET 中实现它。
//注意我不需要多次发送这个数据包,只需一次。
提前致谢!
c# - C#:Blowfish 加密单个 dword
我正在将 C++ TCP 客户端转换为 C#。客户端用于使用河豚对数组的 4 个字节进行编码。
C++
C#
在 C++ 代码中,当使用这些参数调用“Blowfish.Encode”行时,它会进入 cBlowfish.Encrypt 函数
为了清楚起见,由于传递的字节长度很短(4),循环只执行了一次。
从这个巨大的代码中只执行一个调用(只执行一次),调用是:
//意思是代码传递前两个if语句,然后离开循环和函数。
从我的角度来看,解决方案隐藏在加密函数内部的某个地方:
定义:
问题是 C++ 中的 Blowfish_Encipher 函数有两个参数:Input(xl) as dword 和 Output(xr) as dword。
C# Blowfish Encrypt_Block 函数有四个参数,为什么?
与 C++ 河豚不同,EncryptBlock 调用 Encrypt 而不是 Encrypt 来调用 EncryptBlock。也许 EncryptBlock 不是 C++ Blowfish_Encipher?
无论如何,我的问题是,当我用 6 个字节的数组调用 C++ 代码时,请求河豚只编码最后 4 个字节,它做到了。
如果我用这 4 个字节在 C# 中调用 encrypt 函数,它返回 0x00。(如果您想查看 C# Blowfish,请查看我的第一行 - 我已在此处添加了一个超链接)。
注意我不能改变数据包的结构,它应该是这样的,但是加密的。
我也试过这个:
知道C++ Encrpypt函数只执行一个调用-blowfish Encipher。我尝试在C#中直接调用EncryptBlock,但是输入和输出有Hi Uint32和Low Uint32,如何将它们传播为HI或LO?如果 Encrypt_Block 在 C# 中调用河豚加密,这会起作用吗?我不太确定。
先感谢您!
c - Adaptation problem with the Blowfish Encryption in C
I'm writing a program that implements the Boneh-Franklin Identity Based Encryption. For the actual encryption methods, I use Blowfish which I got from (https://voltar.org/). I'm trying to adapt the blowfish encryption/decryption code to my program. The difference in my program is that I read the message from the standard input, encrypt it and print the encryption, then decrypt it and print the decryption (which should be the original message). Currently, I read the input message up to a "?" character and then try to follow the code from the site. However, the decryption is printed as unreadable characters. I tried to solve this problem but I got stuck. Can you please help me?
************ This is my code to read the input message: ***************
************ Then I used the code (cited and referenced) for encryption ***************
Of course I modified it as message read from stdin not program args
************ Then I used the code (cited and referenced) for decryption ***************
Here, I excluded the part where it tokenized the cipher and created the plain char array for decryption, I simply passed the cipher array to be decrypted (as it is output from the encryption function), and stored in the plain char array with length = strlen(cipher)
Any help is appreciated. Sorry for the inconvenience and many thanks in advance.
ruby - 如何在 Ruby 中将 Blowfish 编码的二进制字符串转换为 ASCII?
我想使用 Ruby 和Crypt library对一些纯文本进行编码。然后,我想将此加密文本(连同其他一些数据)作为 ASCII 十六进制字符串传输到 XML 文件中。
我有以下代码片段:
哪个输出:
我相信我需要调用enc.unpack()
,但我不确定 unpack 方法调用需要哪些参数。
java - 在 AS3Crypto 和 Javax.Crypto 之间加密/解密 ECB/PKS5/Blowfish 失败并出现填充错误
我有一个作为文件发送给我的密钥,因此我可以使用 Blowfish 加密一些 xml 数据。如何访问密钥以便可以将其与 AS3Crypto 一起使用?我假设我需要使用 [Embed] 元标记嵌入它。它是 mimeType="application/octet-stream" 但我不确定这是否正确。如何嵌入,然后将此文件作为密钥引用?我正在加密的 xml 无法在 Java 端解密。每次尝试都失败,但出现以下异常:
javax.crypto.BadPaddingException:给定最终块未正确填充。
作为奖励,如果有人有使用 lib 来处理 Java 实现的经验并且知道使用的理想模式/填充/IV,那将是很棒的。谢谢!
blowfish - 将 TurboPower Blowfish 移植到 .Net
我有一个应用程序,它最初是用 Borland C++ 编写的,并使用了在 TurboPower LockBox 组件中实现的 Blowfish 算法。
此应用程序现已移植到 C#。目前我调用了一个使用该算法的 Borland C++ dll。但是,在 64 位操作系统上运行应用程序时,每当尝试使用此 dll 时都会出错。如果我将应用程序编译为 32 位,一切正常,但我们希望让此应用程序作为 64 位应用程序工作。据我所知,这意味着我需要一个像 C++ 一样工作的 .Net Blowfish 算法。
我找到了 Blowfish.Net,它看起来很有希望。但是,当我使用相同的密钥和文本时,加密的结果不匹配。我确实发现 C++ dll 使用 BlowfishECB 算法。它还将结果转换为 Base 64,我也这样做了。
对此的任何帮助将不胜感激。这是 C# 中的一些测试代码。