java - 从字符串到字节数组,然后再到字符串

标签 java string encryption cryptography

我正在尝试模拟RSA加密和解密我想要的加密方法

  1. 获取字符串
  2. 转换为byte[]
  3. 执行 RSA 函数(我将在下面的代码中展示)
  4. 将字节 [] 作为字符串返回

我现在拥有的并且它可以工作,但是可以接收和返回字节[](不是字符串)

   public byte[] encrypt (byte[] message){

   byte [] t= ((new BigInteger(message)).modPow(e, N)).toByteArray();

  return (t);

}

我想要的解密方法

  1. 接收 encrypt() 返回的字符串
  2. 将其转换为byte[]
  3. 对字节[]进行RSA运算,得到原始字节[]
  4. 返回原始字符串 到目前为止我所拥有的

        public byte [] decrypt (byte [] message) {
    
         byte[] data= ((new BigInteger(message)).modPow(d, N)).toByteArray();
    
         return data;
          }
    

这两种方法都有效,但是我需要在我的主类中创建一个 byte[] 并使用 byte[]Str.getbyte() 进行加密并使用 new String(byte[]) 进行加密......

我希望我的 main 只处理字符串。当我使用这样的解密(字符串消息)代码时

    public String decrypt (String message) {

       byte[] data= ((new BigInteger(message.getBytes())).modPow(d, N)).toByteArray();

    return data.toString();
    } 

它不像解密(byte [] message)那样给我原始文本,但它返回类似 B@79f0a8b

我确信我错过了与将文本转换为 byte[] 相关的内容,反之亦然,但我不确定我错过了什么。

我很想听听你的消息。

(抱歉我的英语不好)

最佳答案

加密结果的字符串值的原因是什么?如果您尝试搜索:byte[] to String java,您可以轻松地将 byte[] 转换为 String 并将其反转。 。 但真的有这样做的理由吗?

也许你想要这样的东西:

public byte[] encrypt (String message);
public String decrypt (byte[] message);

然后您将使用字符串输入进行操作,并能够获得字符串解密结果。但是没有理由对字符串中的加密数据进行操作,它看起来像是冗余操作:您的字符串将不可读,并且算法将使用 byte[]。只需转换加密输入并解密输出即可。

关于java - 从字符串到字节数组,然后再到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191485/

相关文章:

c# - 如何仅从 SaveFileDialog.FileName 获取目录名称

c++ - 为什么我的代码只输出输入字符串的一部分?

java - 如何去掉 PKCS7Padding 中的零

java - 如何获得对密码套件 TLS_PSK_WITH_AES_128_GCM_SHA256 的支持?

java - 带有描述的热点 VM 操作列表

Java飞行记录器分析摘要提取

javascript - Java颜色整数到JavaScript中的RGB字符串

java - 如何使 ZoneOffset UTC 返回 "+00:00"而不是 "Z"

java - 如何将支票转换为包含小数位的文字

c# - 如何在 PHP 中解密 C# 中使用 3DES 加密的字符串?