如何从e(publickey),d(私钥)和模数计算p和q参数?
我手头有BigInteger键我可以将粘贴复制到代码中.一个公钥,一个私钥和一个模数.
我需要从中计算出RSA参数p和q.但我怀疑有一个我无法用谷歌找到的库.有任何想法吗?谢谢.
这不一定是暴力,因为我不是在私钥之后.我只有一个遗留系统,它存储公钥,私钥对和模数,我需要将它们放入c#以与RSACryptoServiceProvider一起使用.
所以它归结为计算(p + q)
public BigInteger _pPlusq()
{
int k = (this.getExponent() * this.getD() / this.getModulus()).IntValue();
BigInteger phiN = (this.getExponent() * this.getD() - 1) / k;
return phiN - this.getModulus() - 1;
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.你能发现问题吗?
5个小时后...... :)
好.如何在C#中选择Zn*(http://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n)中的随机数?
为什么$每次加密的内容都不同?
// aquire public key from server
$server_public_key = openssl_pkey_get_public(file_get_contents("C:\publickey.pem"));
// rsa encrypt
openssl_public_encrypt("123", $encrypted, $server_public_key);
Run Code Online (Sandbox Code Playgroud)
我也试过这个
$publicKey = "file://C:/publickey.pem";
$privateKey = "file://C:/privatekey.pem";
$plaintext = "String to encrypt";
openssl_public_encrypt($plaintext, $encrypted, $publicKey);
$transfer = base64_encode($encrypted);
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
echo $transfer; //encrypted string
Run Code Online (Sandbox Code Playgroud)
和$ transfer每次都是不同的字符串:...
Z1xyMUquARxcGjqjjSHNAm41CnHI02GXxLyFivvta8YhDkhRJdD4i3kx + 8GElljdiSY/NMF9UD3ritWMLGmscdq/QyIf + geYxJFePNd1dNWg + V6zbAKRLaEpsU + aB87jiM/GjytLEkI63dku02BS0ZBgz9UZw/FDNaynV5bTTDM =
mRgLPsPtMoV9la7zzuU + cLzS5xMDp7QUmH6Iv4Sv4/FNjt62zcv9ZMWkfG3uVhS8Z1UDtGl + met1CYjBTcfjHCR6hahbwOkTCICXtkRQcc371vURW04XhQzMNgIIbvN5BBdmIyYI6alrS2vKUq7b3T0h8sJf36zh5CynYzyDCFU =
G5FhMoJGiUwEBvEOeZpDDrEXdxbWX5iaJ6F + VdYJ3CURPRMftskZNlDhat8gA5V0G + 3nXVQZptkHjxMkOqPlmwJHjgIqAiFppHLpEKohyT9qNwkAR00Y6PiWrNUJPiEIZqXHAb8TS0AA0Quhc0UAwcc + I8NGOD59k8BrZE6Z5Ew =
我有一个关于从pdf文件中提取文本,精确表格数据的一般性问题.
pdf查看器如何读取和显示表格?为什么我们不能以同样的方式获得必要的列信息?
我现在正在搜索这个问题一周,主要是使用pdftoxml来使用令牌坐标和太宽的表格单元格(这样就无法准确地识别中间空表格单元格).
我通过对文本进行重新定位来解决这一问题(如果某些行间距离被忽略并"粘贴在一起",那顺便说一句,这是非常成功的),但这当然只是一个实例解决方案.
这让我头疼.pdf查看器为单元格绘制线条并知道单元格的开始和结束位置,但我们无法从pdf源中读取它.这怎么可能呢?他们知道我们无法推断出什么?
当我进入时
new String("<some arabic text>".getBytes(), "UTF-8");
Run Code Online (Sandbox Code Playgroud)
尽管显示的方式与粘贴(到 Eclipse 编辑器中)的方式完全相同,但索引 0 包含字符串最右边的字符。
(另外,每个阿拉伯字母都是两个字节,每个字节的第一个字节是-40。这是否表示顺序?)
我想知道java编译器是否在后台识别阿拉伯语,eclipse编辑器是否会重新组织阿拉伯语文字?或者为什么调试器知道这是阿拉伯语,这意味着第一个读取的字母是最右边的字母,因此分配了索引 0。
rsa ×2
c# ×1
cryptography ×1
dependencies ×1
encryption ×1
java ×1
ms-access ×1
oop ×1
openssl ×1
parsing ×1
pdf ×1
php ×1
string ×1
uml ×1