第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 JAVA 上使用 RSA 加密和解密的問題

在 JAVA 上使用 RSA 加密和解密的問題

守著星空守著你 2022-01-12 17:11:51
所以我正在嘗試加密在用戶鍵入內(nèi)容時創(chuàng)建的文件,并且在加密之后我想解密文件。用戶創(chuàng)建的文件和加密文件的創(chuàng)建沒有問題,但是當(dāng)我打開加密文件時,我認為它的空白是錯誤的,因為它上面應(yīng)該寫有一些亂碼。package br.com.rsa;import java.security.*;import java.io.*;import java.util.*;import javax.crypto.*;public class Geracao {public static void main(String[] args) throws IOException {    //Gerando um arquivo que será encriptado e descriptografado.    Scanner entrada1 = new Scanner(System.in);    System.out.println("Digite qualquer coisa: ");    String entrada = entrada1.nextLine();    System.out.println("Arquivo criado.");    FileOutputStream saida = new FileOutputStream("arquivo.txt");    PrintStream imprimir = new PrintStream(saida);    System.setOut(imprimir);    System.out.println(entrada);    saida.close();    //Gerando as chaves publica e privada.    try {           KeyPairGenerator chave = KeyPairGenerator.getInstance("RSA");    chave.initialize(1024);    KeyPair chaves = chave.generateKeyPair();    PrivateKey privada = chaves.getPrivate();    PublicKey publica = chaves.getPublic();    Base64.Encoder cripto = Base64.getEncoder();    System.out.println("Chave privada: " + cripto.encodeToString(privada.getEncoded()));    System.out.println("");    System.out.println("Chave publica: " + cripto.encodeToString(publica.getEncoded()));    System.out.println("");        //Salvando as chaves publica e privada.        try (FileOutputStream s_prv = new FileOutputStream("privada" + ".key")){            s_prv.write(chaves.getPrivate().getEncoded());        }        try (FileOutputStream s_pub = new FileOutputStream("publica" + ".key")){            s_pub.write(chaves.getPublic().getEncoded());        }        Criptografar(chaves, null);        //Descriptografar(chaves, null);    }    //Qualquer erro dentro da gera??o das chaves    catch (Exception e){        System.out.println(e);    }}
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

更新:


RSA 并不意味著加密大量數(shù)據(jù)。在這種情況下,使用 1024 位 RSA 密鑰和默認為 PKCS#1 v1.5 的填充,他不能加密超過 117 字節(jié)的數(shù)據(jù)。——詹姆斯·K·波爾克


這里有很多問題。

首先,您設(shè)置System.out新流并關(guān)閉它。因此,您看不到來自您的應(yīng)用程序的任何響應(yīng)。


解決方案1:保留默認輸出流并將其重新設(shè)置


PrintStream defaultOutStream = System.out;

PrintStream imprimir = new PrintStream(saida);

System.setOut(imprimir);

System.out.println(entrada);

saida.close();

System.setOut(defaultOutStream);

解決方案2:以不同的方式寫入文件,例如


try (FileOutputStream saida = new FileOutputStream("arquivo.txt");){

    saida.write(entrada.getBytes(Charset.forName("UTF-8")));

} catch (Exception e){

    e.printStackTrace();

}

其次,你有一個例外。您將看到“Problema no manuseio do arquivo”。在解決第一個問題后在您的控制臺中。但是沒有堆棧跟蹤就沒有幫助。您需要更新 catch 塊以打印異常的原因。例如:


catch(Exception e) {

    e.printStackTrace();

    System.out.println("Problema no manuseio do arquivo.");

}

在它之后,您將在控制臺中找到異常的名稱和它發(fā)生的行號。這是輸出文件為空的根本原因。


在進一步閱讀之前,請嘗試了解如何修復(fù) nullpointer 以及導(dǎo)致它的原因。練習(xí)調(diào)試!在導(dǎo)致空指針的行上放置斷點。


首先,您使用Cipheras調(diào)用構(gòu)造函數(shù)null:


Criptografar(chaves, null);

接下來,您正在創(chuàng)建正確的密碼,但使用舊密碼調(diào)用進程函數(shù),其值仍然為空:


static private void Criptografar(KeyPair chaves, Cipher ci){

    try {

        PublicKey publica = chaves.getPublic();

        Cipher cifra = Cipher.getInstance("RSA");

        cifra.init(Cipher.ENCRYPT_MODE, publica);

        FileInputStream entrada_arq_c = new FileInputStream("arquivo.txt");

        FileOutputStream saida_arq_c = new FileOutputStream("criptografado.txt");

        processFile(ci, entrada_arq_c, saida_arq_c);

    }

    catch(Exception e){

        System.out.println("Erro ao criptografar.");

    }

}

解決方案之一是使用正確的參數(shù)調(diào)用函數(shù): processFile(cifra, entrada_arq_c, saida_arq_c);


幾點建議:


您沒有Cipher在Criptografar構(gòu)造函數(shù)中使用參數(shù),請將其刪除

在所有 catch 塊中打印堆棧跟蹤


查看完整回答
反對 回復(fù) 2022-01-12
  • 1 回答
  • 0 關(guān)注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號