小编Teb*_*bbe的帖子

在 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
查看次数

Python First Class函数的后续应用:是否比嵌套更清洁?

我正在做一个例子来帮助我学习如何在Python中使用第一类函数.总的来说,我对我提出的解决方案感到满意,除了一行代码尖叫"非Pythonic"给我.

所以我在这里定义我正在使用的问题.这个难题寻求六个简单函数的单个排列(720个可能),其中涉及"2"最终返回-3.

这是我的解决方案,它简单地转储每个可能的六功能排列及其结果.

def perform (fun, arg):
    return fun(arg)

def a(n):
    return n + 2

def d(n):
    return n / 2.

def m(n):
    return n * 2

def p(n):
    return n ** 2

def r(n):
    return n ** 0.5

def s(n):
    return n - 2

if __name__ == "__main__":
    from itertools import permutations

    for i, perm in enumerate(permutations([a, d, m, p, r, s])):
        try:
            k = perform(perm[5], perform(perm[4], perform(perm[3], perform(perm[2], perform(perm[1], perform(perm[0], 0))))))
        except ValueError:
            k …
Run Code Online (Sandbox Code Playgroud)

python function-pointers

0
推荐指数
1
解决办法
141
查看次数

标签 统计

des ×1

encryption ×1

function-pointers ×1

java ×1

md5 ×1

python ×1

python-2.7 ×1