相关疑难解决方法(0)

可逆散列函数?

我需要一个可逆的哈希函数(显然输入的大小要小于输出),它以一种随机的方式将输入映射到输出.基本上,我想要一种方法将像"123"这样的数字转换为更大的数字,如"9874362483910978",但不是以保留比较的方式,所以如果x1> x2,f(x1)则不能总是如此)> f(x2)(但也不一定总是假).

对此的用例是我需要找到一种方法将小数字转换为更大的,随机的数字.它们实际上并不需要是随机的(事实上,它们需要是确定性的,所以相同的输入总是映射到相同的输出),但它们确实需要看起来是随机的(至少当base64编码为字符串时,所以移位Z位将无法工作,因为类似的数字将具有类似的MSB).

此外,简单(快速)计算和反转是一个加号,但不是必需的.

我不知道我是否清楚,或者是否存在这样的算法,但我会感激任何帮助!

python hash

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

一次性填充,加密和解密

我正在尝试接受密码学并且一直在尝试这个练习

编写程序(最好是Java)来生成一次性填充,这是所有随机数据(比如1 MB)的相对较大的文件.该程序还应该能够基于生成的一次性填充来加密/解密文件.

提示:使用以下测试向量检查您的程序是否正确加密.

明文(ASCII):每个云都有一线希望
OTP(HEX):
密文(HEX):28b14ab7ecc33ea157b539ea426c5e9def0d81627eed498809c17ef9404cc5

我曾尝试使用随机数生成器生成一次性打击垫,因为我需要将它们转换为HEX格式.而且我很确定我很困惑或者没有以正确的方式解决它

public static void oneTimePad()
{
    Random ran = new Random();
    String s = "0123456789ABCDEF";
    for(int i = 0; i < 100; i++)
    {   
        System.out.print(s.charAt(ran.nextInt(s.length())));
    }
}
Run Code Online (Sandbox Code Playgroud)

以上将是我的一次性填充,我想知道如何使用一次性密码并解密它来实现加密.

java encryption cryptography one-time-pad

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

标签 统计

cryptography ×1

encryption ×1

hash ×1

java ×1

one-time-pad ×1

python ×1