0

我正在为每个变量输入值以获取加密消息。出于测试目的,所有这些都是硬编码的。

这会?????在它应该返回时返回值538 1729 1328 1328 2146。有什么我放错了吗?这是我的代码遇到的唯一问题。

public static void main(String[] args){
    int p = 61;
    int q = 37;
    int pq = p * q;
    int phiPQ = (p - 1) * (q - 1);
    int e = 7;
    int d = 1543;
    String message = encryptMsg("hello", pq, e);
    System.out.println(message);
}

public static String encryptMsg(String msg, int pq, int e){
    BigInteger bE = new BigInteger(Integer.toString(e));
    BigInteger bPQ = new BigInteger(Integer.toString(pq));
    String encryptedMsg = "";
    for(int i = 0; i < msg.length(); i++){
        BigInteger m = new BigInteger(Integer.toString(msg.charAt(i)));
        BigInteger bC = m.modPow(bE, bPQ);
        encryptedMsg += " " + (char)bC.intValue();
    }
    return encryptedMsg;
}
4

1 回答 1

1

我想你可能想要

encryptedMsg +=" " + bC.toString();

目前你正在将整数转换为一个字符,所以我猜想返回 unicode,而你似乎期望的是整数作为字符串。

于 2013-10-23T00:59:48.123 回答