标签: chinese-remainder-theorem

将RSA加密参数从CRT(中国剩余定理)映射到.NET格式

我需要使用C#实现RSA加密/解密

我有一个包含以下参数的私钥:

mod n,exponent,p,q,dP,dQ,和(p-1mod q)

以上参数在中文余数算法中进行了解释

但是,RSA的C#.NET实现具有以下不同的参数集:

Modulus,Exponent,P, Q,DP,DQ,D,InverseQ

当我试图将数据映射CRT到时DOTNET,我得到错误Bad Data

对于 p,q,dP以及dQ映射是明显的,但有关的参数,其余的我不知道.

如果我可以获得映射这些参数的帮助,那就太棒了

.net c c# rsa chinese-remainder-theorem

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

从剩余的几个中恢复一个数字(中国剩余定理)

我有一个长整数,但它不是以十进制形式存储,而是存储为余数.

所以,我没有这个N数字,而是一组这样的剩余部分:

r_1 = N % 2147483743
r_2 = N % 2147483713
r_3 = N % 2147483693
r_4 = N % 2147483659
r_5 = N % 2147483647
r_6 = N % 2147483629
Run Code Online (Sandbox Code Playgroud)

我知道,N小于这些素数的乘法,所以中文余数定理在这里起作用(http://en.wikipedia.org/wiki/Chinese_remainder_theorem).

N如果我有这6个余数,我怎么能以十进制恢复?精彩的将是任何程序(C/C + GMP/C++/perl/java/bc).

例如,最小N可以有这组余数:

r_1 = 1246736738 (% 2147483743)
r_2 = 748761 (% 2147483713)
r_3 = 1829651881 (% 2147483693)
r_4 = 2008266397 (% 2147483659)
r_5 = 748030137 (% 2147483647)
r_6 = 1460049539 (% 2147483629)
Run Code Online (Sandbox Code Playgroud)

math gmp bignum arbitrary-precision chinese-remainder-theorem

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

MATLAB中的模和余数(中国余数定理)

考虑到数组中的模数值及其余值,如何在Matlab中找到最小值?例如:

A=[ 23 90 56 36] %# the modulo values
B=[  1  3 37 21] %# the remainder values
Run Code Online (Sandbox Code Playgroud)

这导致了答案93; 这是最不可能的价值.


编辑:

这是我的代码,但它似乎只显示余数数组的最后一个值作为最小值:

z = input('z=');
r = input('r=');
c = 0;
m = max(z);
[x, y] = find(z == m);
r = r(y);
f = find(z);
q = max(f);
p = z(1:q);
n = m * c + r;
if (mod(n, p) == r)
    c = c + 1;
end
fprintf('The lowest value is %0.f\n', n) 
Run Code Online (Sandbox Code Playgroud)

matlab modulo chinese-remainder-theorem

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

如何从P,Q和E计算用于RSA加密的D.

我试图找到D使用P,QE(Dp,Dq和可得).(p-1mod q)

根据这个答案这个答案并更新了这个问题用下面的方法,我应该得到D.

为了测试这一点,我生成了密钥对,并尝试从现有组件中计算组件,并将结果与​​原件进行比较.所有结果都很好,除了D.我从上面的答案中复制了我的计算错误.如果有人能告诉我我做错了什么会很棒.

测试代码

using System;
using System.Numerics;
using System.Security.Cryptography;
using System.Text;

class Program {

    static RSAParameters key = new RSAParameters() {
        P = new byte[]{
                0xDE, 0xA6, 0x35, 0x0B, 0x0A, 0xA5, 0xD7, 0xA0, 0x5C, 0x49, 0xEA, 0xD1, 0x3F, 0xA6, 0xF5, 0x12, 
                0x19, 0x06, 0x25, 0x8A, 0xD9, 0xA7, 0x07, 0xE7, 0x0D, 0x8A, 0x7C, 0xB1, …
Run Code Online (Sandbox Code Playgroud)

.net c# rsa chinese-remainder-theorem

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

功能python - 为什么这些生成器中只有一个需要list()才能工作?

在从元组向量(残差,模数)计算中国剩余定理时,以下代码失败:

c = ((1,5),(3,7),(11,13),(19,23))

def crt(c):
        residues, moduli = zip(*c)
        N = product(moduli)
        complements = (N/ni for ni in moduli)
        scaled_residues = (product(pair) for pair in zip(residues,complements))
        inverses = (modular_inverse(*pair) for pair in zip(complements,moduli))
        si = (product(u) for u in zip(scaled_residues,inverses))
        result = sum(si) % N
        return result
Run Code Online (Sandbox Code Playgroud)

将结果赋予0(我猜生成的iterables为空).但以下代码完美运行:

def crt(c):
        residues, moduli = zip(*c)
        N = product(moduli)
        complements = list((N/ni for ni in moduli)) # <-- listed
        scaled_residues = (product(pair) for pair in zip(residues,complements))
        inverses = (modular_inverse(*pair) …
Run Code Online (Sandbox Code Playgroud)

python functional-programming chinese-remainder-theorem

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

中国剩余定理 Haskell

我需要在Haskell中编写一个或多个函数来解决中国剩余定理。它需要使用以下定义创建:

crt :: [(Integer, Integer)] -> (Integer, Integer)
Run Code Online (Sandbox Code Playgroud)

答案看起来像

>crt [(2,7), (0,3), (1,5)]
(51, 105)
Run Code Online (Sandbox Code Playgroud)

我想我有一个整体的想法,我只是没有写它的知识。我知道 crt 函数必须是递归的。我创建了一个辅助函数来将元组列表拆分为两个列表的元组:

crtSplit xs = (map fst xs, product(map snd xs))
Run Code Online (Sandbox Code Playgroud)

在这个例子中,它给了我:

([2,0,1],105)
Run Code Online (Sandbox Code Playgroud)

我想我需要知道的是为第一个列表中的每个元素创建一个列表。我将如何开始这样做?

recursion haskell chinese-remainder-theorem

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