我正在尝试从RSA代码中获取消息,但似乎无法理解 怎么样。 我试图用来查找消息的公式是:c ^ d mod n。 在我收到的文本文件(这是RSA代码)中,我有3个参数:
c参数:
c=62094327354293714871337806608043143339672711375275261525243238242322194473023610842261452370807533140129255594935713596899492336925573500404508972313463258470764117200138784924348362580128423518572743446058119722861164424364186271770831857887818550880280385895469933434901508250872871673722739401583613920865
N参数:
N=102518413348128616948064302091615267327586561544914497024946023154172320251650248158262401038211060025769143033483116931749752882566368072181993447378932810603880706573407783516535716219705301632360773290434984792276962906314924125193872533986871367036809927042370179209563059349511562287725586162360516841779
和d参数:
d=90575112832191634931822012293951618304193311969935139031973154594700485026947413962490036848108653090804963912366135718482295366073482828257042351498160831683665400283336482471506944874247073018050011183570224881323949477869741822928092177900190031155493051065073868895195339892585741809998466654281718606993
现在的问题是数字太长(308位数字长,N参数长309位数字)。到目前为止,我找不到任何可以计算c ^ d的计算器。
有什么帮助吗?
答案 0 :(得分:0)
您可以使用math.BigInteger使用Java实现此功能
BigInteger c = new BigInteger("62094327354293714871337806608043143339672711375275261525243238242322194473023610842261452370807533140129255594935713596899492336925573500404508972313463258470764117200138784924348362580128423518572743446058119722861164424364186271770831857887818550880280385895469933434901508250872871673722739401583613920865");
BigInteger N = new BigInteger("102518413348128616948064302091615267327586561544914497024946023154172320251650248158262401038211060025769143033483116931749752882566368072181993447378932810603880706573407783516535716219705301632360773290434984792276962906314924125193872533986871367036809927042370179209563059349511562287725586162360516841779");
BigInteger d = new BigInteger("90575112832191634931822012293951618304193311969935139031973154594700485026947413962490036848108653090804963912366135718482295366073482828257042351498160831683665400283336482471506944874247073018050011183570224881323949477869741822928092177900190031155493051065073868895195339892585741809998466654281718606993");
BigInteger m = new BigInteger("1");
m = c.modPow(d, N);
System.out.println(m);
结果将是
12095051301478169748702315942951183566712581822646196016924926165965065297342257