Tag: 公钥加密

如何从java中的PFX文件中读取公钥

我能够从PFX文件中读取私钥,但不能读取公钥。 我使用以下代码来读取公钥。 InputStream inStream = new FileInputStream(certFile); CertificateFactory cf = CertificateFactory.getInstance(“X.509”); BufferedInputStream bis = new BufferedInputStream(inStream); // if (bis.available() > 0) { java.security.cert.Certificate cert = cf.generateCertificate(bis); System.out.println(“This part is not getting printed in case of PFX file”); // } puk = (PublicKey) cert.getPublicKey(); 当我从.cer文件中读取时,此代码正常工作。 请帮忙

如何在JAVA或Android中加密和解密UTF-8?

我使用此算法在android中加密和解密数据。 但是当使用utf-8字符时..显示此错误:[加密]数据不对齐块大小。 我使用此算法进行加密和解密: https ://snipt.net/raw/ee573b6957b7416f28aa560ead71c3a2/ ? nice 我的代码: HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(ServerIP.frooshgah_URL); List nameValuePairs = new ArrayList(); JSONObject json = new JSONObject(); try { json.put(“UserId”, “0s”); json.put(“N_frooshgah”, N_frooshgah); json.put(“N_masol”, N_masol); json.put(“N_makan”, N_makan); json.put(“address”, address); json.put(“tel”, tel); json.put(“time_baz”, time_baz); json.put(“time_baste”, time_baste); json.put(“tavzihat”, tavzihat); json.put(“tag”, tag); json.put(“categori”, “پوشاک”); json.put(“city”, city); json.put(“lat”, […]

RSA加密在生成公钥/私钥之前强制关闭

我正在尝试为RSA加密生成我的第一个公钥/私钥对。 这是我第一次这样做,但通过查看各种教程和网站,我决定使用以下代码。 虽然我的代码没有给我错误,但它强制关闭。 一切都贴出来,包括我的import,可以sombody请帮助我理解为什么我的代码没有生成密钥并给我错误? 是的,我确实在AndroidManifest.xml文件中声明了它 import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.math.BigInteger; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; public class RSA { public static void GenerateKeyPair() { try { KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(4096); KeyPair kp = kpg.genKeyPair(); KeyFactory fact = KeyFactory.getInstance(“RSA”); RSAPublicKeySpec pub = fact.getKeySpec(kp.getPublic(), RSAPublicKeySpec.class); RSAPrivateKeySpec priv = […]

Java公钥私钥解密问题

我正在尝试加密和解密消息,如下面的代码所示。 基本上我想用公钥加密消息,并将该加密消息从字节数组转换为String。 并将此字符串解密为原始文本。 以下是这两种方法。 这里加密工作正常,但解密失败(错误是“数据必须从零开始”)。 我认为这是因为我将加密的字节数组转换为String。 我该如何解决这个问题? (我希望将加密的字节数组作为字符串并用于解密)是否有其他方法(使用公钥和私钥) public static String getEncryptedMessage(String publicKeyFilePath, String plainMessage) { byte[] encryptedBytes; try { Cipher cipher = Cipher.getInstance(“RSA”); byte[] publicKeyContentsAsByteArray = getBytesFromFile(publicKeyFilePath); PublicKey publicKey = getPublicKey(publicKeyContentsAsByteArray); cipher.init(Cipher.ENCRYPT_MODE, publicKey); encryptedBytes = cipher.doFinal(plainMessage.getBytes()); return new String(encryptedBytes); } catch (Throwable t) { } } public static String getDecryptedMessage( String privateKeyFilePath, String encryptedMessage) […]

加密(模式和填充)

我的任务是编写一个涉及加密的小型Java控制台应用程序。 我不熟悉加密,所以我必须先做一些阅读。 到目前为止,给出的高级要求是AES-256应该用于生成一次性密钥来加密文件。 之后,应使用收件人的公钥(RSA-2048)来加密该AES-256一次性密钥。 然后,加密文件和加密的一次性AES-256密钥将被压缩并发送给收件人。 根据我对读取加密和解密的理解,除了算法(RSA,AES等)之外,还有称为模式和填充的东西。 例如,以下代码将RSA指定为算法,ECB模式和PKCS1Padding。 Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); 必须在加密和解密中使用相同的算法,模式和填充。 因此,向用户询问他们想要的模式和填充是否合理? 我注意到Cipher cipher = Cipher.getInstance(“RSA”)似乎使用了ECB的默认模式和PKCS1Padding的填充,因此这行代码与上面相同。 那么可以假设ECB模式和PKCS1Padding模式将默认用于RSA-2048吗?

如何将String转换为PublicKey?

我使用以下代码将公钥和私钥转换为字符串 KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(“RSA”); keyPairGen.initialize(2048); KeyPair keyPair = keyPairGen.genKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); String publicK = Base64.encodeBase64String(publicKey.getEncoded()); String privateK = Base64.encodeBase64String(privateKey.getEncoded()); 现在我正在尝试将其转换回公共广告私钥 PublicKey publicDecoded = Base64.decodeBase64(publicK); 我收到错误,无法从byte []转换为公钥。 所以我试过这样的 PublicKey publicDecoded = new SecretKeySpec(Base64.decodeBase64(publicK),”RSA”); 这会导致如下错误 java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: Neither a public nor a private key 看起来我在这里做了错误的密钥转换。 任何帮助,将不胜感激。

相当于java中的OpenSSL命令

我对java或openssl中的文件加密并不是很熟悉。 我从学校了解基础知识但从未实际实施过。 现在我已经获得了以下3个命令: //generate random base64 private key openssl rand -base64 32 -out (keypath) //Encrypt random key with public key openssl rsautl -encrypt -inkey (encryptionkey) -pubin -in (input) -out (output) //encrypt file openssl enc -aes-256-cbc -salt -in (input) -out (output) -pass file:(keypath) 我需要在java中完全复制它。 有这么简单的方法吗? 我可以使用哪个库让这更容易吗? 对于第一行,我使用java 7中的SecureRandom函数生成一个字节数组,然后使用apache commons编解码器库将其加载到base64。 像这样: byte[] bytes = new byte[32]; new […]

如何加密.jar文件

我正在一个项目中,我们需要加密.jar文件,所以没有人可以访问jar文件中的.class文件….是否有任何java编码可以帮助我加密.jar文件?