标签: des

计算Ruby中一个字节的奇偶校验

在Ruby中计算字节是否具有奇数或偶数奇偶校验的最佳方法是什么?我有一个版本工作:

result = "AB".to_i(16).to_s(2).count('1').odd?
=> true
Run Code Online (Sandbox Code Playgroud)

将数字转换为字符串并计算"1"似乎是计算奇偶校验的一种不好的方法.有更好的方法吗?

我希望能够计算3DES密钥的奇偶校验.最终,我想将偶数字节转换为奇数.

谢谢,丹

ruby 3des des parity

6
推荐指数
1
解决办法
1389
查看次数

如何在C#中使用三重DES进行ISO 9797-1 MAC?

我有一个项目,规定了24字节数据块的以下加密规则.

1)密码学应使用9797-1中定义的全三重DES MAC算法作为MAC算法3进行,输出变换3没有截断,而CBC模式下的DES作为ICV设置为零的分组密码.最后8个字节的加密数据构成了我们需要的值.

该程序说加密完成是错误的.为了符合上述规格,我还需要做其他事吗?

数据是一个24字节的值,加密的输出应该是8个字节,我猜(根据规范).我得到整个24字节作为输出:(

我编写了以下代码来实现上述规范:

des.KeySize = 128;
des.Key = ParseHex(key);
des.Mode = CipherMode.CBC;
des.Padding = PaddingMode.None;

ICryptoTransform ic = des.CreateEncryptor();

CryptoOutput = ic.TransformFinalBlock(CryptoOutput, 0, 24);
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个:

MACTripleDES des = new MACTripleDES(ParseHex(key));
byte[] CDCryptp = des.ComputeHash(CryptoOutput);
Run Code Online (Sandbox Code Playgroud)

c# hash 3des cryptography des

6
推荐指数
2
解决办法
8338
查看次数

什么是Go相当于Python的crypt.crypt?

我目前正在玩一本名为Violent Python的例子.你可以在这里看到我的实现

我现在正在尝试在Go中实现相同的脚本以比较性能,请注意我对Go来说是全新的.打开文件并遍历这些行很好,但是我无法弄清楚如何使用"加密"库以与Python的crypt.crypt(str_to_hash,salt)相同的方式对字符串进行散列.我觉得它可能就像

import "crypto/des"
des.NewCipher([]byte("abcdefgh"))
Run Code Online (Sandbox Code Playgroud)

但是,没有雪茄.任何帮助都会非常感激,因为将Go的并行性能与Python的多线程性能进行比较会非常有趣.

编辑: crypt.crypt的Python文档

python crypt des go

5
推荐指数
0
解决办法
1170
查看次数

如何在 NODE.JS 上模拟 php crypt()

请帮助 php -> javascript(node.js) 转换

$key = crypt($key, $salt);
Run Code Online (Sandbox Code Playgroud)

我正在用 node.js 重写 php 脚本,但我在 php 中遇到了哈希签名生成问题,该签名是使用 crypt() 函数与盐匹配“CRYPT_EXT_DES”模式生成的

CRYPT_EXT_DES - 扩展的基于 DES 的哈希。“salt”是一个 9 个字符的字符串,由下划线后跟 4 个字节的迭代计数和 4 个字节的 salt 组成。这些被编码为可打印字符,每个字符 6 位,最低有效字符在前。值 0 到 63 编码为“./0-9A-Za-z”。在 salt 中使用无效字符将导致 crypt() 失败。

我对加密并没有真正的经验,并且研究有关 crypto 模块的 Node.js 文档也没有帮助。请帮助如何在node.js上实现这个!

javascript php encryption des node.js

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

哪些迭代规则适用于使用 CRYPT_EXT_DES 的 crypt()?

我的测试用例如下:

echo crypt('string', '_....salt');//error
echo crypt('string', '_A...salt');//fast
echo crypt('string', '_AAAAsalt');//slow
Run Code Online (Sandbox Code Playgroud)

解释如http://www.php.net/manual/en/function.crypt.php所述:

CRYPT_EXT_DES - 扩展的基于 DES 的哈希。“salt”是一个 9 个字符的字符串,由下划线后跟 4 个字节的迭代计数和 4 个字节的 salt 组成。这些被编码为可打印字符,每个字符 6 位,最低有效字符在前。值 0 到 63 编码为“./0-9A-Za-z”。在 salt 中使用无效字符将导致 crypt() 失败。

点是可打印字符,那么为什么它会返回错误呢?哪个“顺序”适用于所使用的字符,导致“AAAA”比“A...”有更多的迭代次数?

php crypt des

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

在 Python 2.7 中复制 Java 的 PBEWithMD5AndDES

如果这不是很明显,我首先要说的是我不是加密货币人士。

我的任务是在 Python 2.7 中复制 Java 的 PBEWithMD5AndDES(具有 DES 加密的 MD5 摘要)的行为。

我确实可以访问 Python 的加密工具包 PyCrypto。

下面是我试图复制其行为的 Java 代码:

import java.security.spec.KeySpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.spec.PBEParameterSpec;
import javax.crypto.Cipher;
import javax.xml.bind.DatatypeConverter;

public class EncryptInJava
{
    public static void main(String[] args)
    {
      String encryptionPassword = "q1w2e3r4t5y6";
      byte[] salt = { -128, 64, -32, 16, -8, 4, -2, 1 };
      int iterations = 50;

      try
      {
        KeySpec keySpec = new PBEKeySpec(encryptionPassword.toCharArray(), salt, iterations);
        SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
        AlgorithmParameterSpec …
Run Code Online (Sandbox Code Playgroud)

java encryption md5 des python-2.7

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

在 OpenSSL 命令中选择不同的填充模式

我写了一个 Java Card 小程序来做 DES 加密/解密。我的小程序源代码如果你想使用它,考虑到 Bodewes 先生在这个源代码中发现了一些错误(那些在他的答案下的评论中提到。所以修复它然后使用)具有以下功能:

  • DES_ECB_ISO9797_M1
  • DES_ECB_ISO9797_M2
  • DES_ECB_NOPAD
  • DES_ECB_PKCS5

我将我的程序输出和在线工具的输出进行了比较,最后我发现它们不同。所以我想使用 OpenSSL 检查我的程序输出的正确性。

这些是0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30使用 key =加密的结果0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88

::> SendToApplet.exe -key 1122334455667788 -data 3030303030303030

Command::

Data: 3030303030303030
Key : 1122334455667788

Results::

DES_ECB_ISO9797_M1:
8E 43 CF B8 91 02 01 38 .C.....8
DES_ECB_ISO9797_M2:
A6 DE 1C D9 1B A9 EE D0 ........
DES_ECB_NOPAD:
0B FC BF EE …
Run Code Online (Sandbox Code Playgroud)

encryption openssl cryptography des

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

奇怪的DES行为 - 使用不同的密钥解密成功

偶尔,我会遇到一个有趣的,奇怪的事情:使用几个不同的密钥可以解密相同的加密文本块!

谁能告诉我出了什么问题?非常感谢.

请不要试图让我切换到三重DES/AES等,我只是想知道问题出在哪里 - 调用Java SDK的方式,还是Java SDK中的错误?

以下是Windows 7上的输出,在Linux框中的结果相同:

D:\>java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

D:\>java DESTest -e 12345678 abcde977

encrypted as [17fd146fa6fdbb5db667efe657dfcb60]

D:\>java DESTest -d 17fd146fa6fdbb5db667efe657dfcb60 abcde977

decryted as [12345678]

D:\>java DESTest -d 17fd146fa6fdbb5db667efe657dfcb60 abcde976

decryted as [12345678]

D:\>java DESTest -d 17fd146fa6fdbb5db667efe657dfcb60 abcde967

decryted as [12345678]

D:\>java DESTest -d 17fd146fa6fdbb5db667efe657dfcb60 abcde867

decryted as [12345678]

D:\>java DESTest -d 17fd146fa6fdbb5db667efe657dfcb60 abcdf867
Exception in thread "main" java.lang.RuntimeException: javax.crypto.BadPaddingEx …
Run Code Online (Sandbox Code Playgroud)

java encryption des

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

三重 DES 加密字符串生成“\n”

加密字符串时,它会'\n'在字符串末尾生成。

这就是我进行加密的方式

public static String encrypt(String plainText) throws Exception {
        byte[] tdesKeyData = Consts.getSecretKey().getBytes();
        byte[] myIV = Consts.getInitializationVector().getBytes();
        SecretKeySpec myKey = new SecretKeySpec(tdesKeyData, "DES");
        IvParameterSpec ivspec = new IvParameterSpec(myIV);
        Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS7Padding");
        cipher.init(Cipher.ENCRYPT_MODE, myKey, ivspec);

        byte[] plainTextBytes = plainText.getBytes("UTF-8");
        byte[] buf = cipher.doFinal(plainTextBytes);
        byte[] base64Bytes = Base64.encode(buf, Base64.DEFAULT);
        String base64EncryptedString = new String(base64Bytes);
        return base64EncryptedString;
    }
Run Code Online (Sandbox Code Playgroud)

请有人指导我,我在这里做错了什么?提前致谢。

java encryption android des

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

如何在 C# 中解密由 des.exe 加密的文件?

我有一个已由des.exe加密的文件。

\n\n

可以使用以下命令对文件进行加密和解密:

\n\n
des -E -k "foo" sample.txt sample.txt.enc\ndes -D -k "foo" sample.txt.enc sample.txt.dec\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试使用以下方法解密:

\n\n
public byte[] Decrypt(FileInfo file, string key)\n{\n  byte[] keyAsBytes = LibDesPasswordConvertor.PasswordToKey(key);\n  byte[] initializationVector = keyAsBytes;\n\n  var cryptoProvider = new DESCryptoServiceProvider();  \n  cryptoProvider.Mode = CipherMode.CBC;\n  cryptoProvider.Padding = PaddingMode.None;  \n\n  using (FileStream fs = file.OpenRead())\n  using (var memStream = new MemoryStream())\n  using (var decryptor = cryptoProvider.CreateDecryptor(keyAsBytes, initializationVector))\n  using (var cryptoStream = new CryptoStream(memStream, decryptor, CryptoStreamMode.Write))\n  {\n    fs.CopyTo(cryptoStream);\n    fs.Flush();\n    cryptoStream.FlushFinalBlock();\n\n    return memStream.ToArray();\n  }\n}\n\npublic static …
Run Code Online (Sandbox Code Playgroud)

.net c# encryption cryptography des

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

标签 统计

des ×10

encryption ×6

cryptography ×3

java ×3

3des ×2

c# ×2

crypt ×2

php ×2

.net ×1

android ×1

go ×1

hash ×1

javascript ×1

md5 ×1

node.js ×1

openssl ×1

parity ×1

python ×1

python-2.7 ×1

ruby ×1