Tag: rsa

使用ssh和sftp通过Java连接到Unix

我需要通过SSH和SFTP协议使用Java连接到Unix服务器并执行特定命令并执行文件传输。 但是在Unix上启用了RSA令牌认证。 所以我需要在运行时获取当前的RSA令牌密码以及用户密码。 那么如何通过Java完成这项工作呢? 是否有任何Java API? 仅供参考,Unix使用putty登录步骤: 使用服务器IP连接。 项目清单 给用户名。 给密码 给出6位数的SecurID生成的数字。

如何从RSAPrivateKey获取RSAPrivateCrtKey?

我有一个java.security.interfaces.RSAPrivateKey和相应的java.security.interfaces.RSAPublicKey包含(仅)模数,私有指数和公共指数。 如果我理解RSA正确,则应该可以恢复java.security.interfaces.RSAPrivateCrtKey(对于CRT键)的数字。 如果是这样,我该怎么办? (我假设已经有一些实现)。

Android保存RSA私钥和公钥

我需要保存我的RSA私钥和公钥。 我在这里创造它。 KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(1024); KeyPair kp = kpg.genKeyPair(); publicKey = kp.getPublic(); privateKey = kp.getPrivate(); 现在我想下次使用这两个键。 所以它们应该存储在设备上。 byte[] publicKeyBytes = publicKey.getEncoded(); byte[] privateKeyBytes = privateKey.getEncoded(); 所以我可以获得字节数组,然后将它们保存为文本文件。 然后下次我读它并将其转换回字节数组。 现在我的问题:如何将字节数组转换回键? 这不起作用: KeyFactory keyFactory = KeyFactory.getInstance(“RSA”); X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyBytes); publicKey = keyFactory.generatePublic(spec); spec = new X509EncodedKeySpec(privateKeyBytes); privateKey = keyFactory.generatePrivate(spec); 在LogCat上,这将显示: 必须使用RSAPublicKeySpec或PKCS8EncodedKeySpec; 是java.security.spec.X509EncodedKeySpec 这个代码有什么问题吗? 谢谢你的帮助。

将Java.Security.KeyPair转换为.NET RSACryptoServiceProvider

如何编码Java生成的RSA私有(和公共)密钥,以便可以在.NET中解码以便在RSACryptoServiceProvider使用? 我试过这段代码: var keyGen = KeyPairGenerator.GetInstance(“RSA”); keyGen.Initialize(2048); KeyPair keyPair = keyGen.GenerateKeyPair(); IPrivateKey privateKey = keyPair.Private; byte[] nativePrivateKey = privateKey.GetEncoded(); var nativeToRsa = new RSACryptoServiceProvider(); nativeToRsa.ImportCspBlob(nativePrivateKey); // throws a CryptographicException 我正在使用Xamarin.Android编写C#,但“原生”Java RSA密钥生成器比单声道生成器快得多。 所以我想使用Java,但我仍然需要能够与Windows人员交换公钥和/或私钥以与RSACryptoServiceProvider一起使用。 所以最终我可能需要/需要双向(Java RSACryptoServiceProvider)。 有没有人有任何指针? 谢谢。

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 / .NET中的RSA加密和.NET中的解密

我的应用程序有Java和.NET客户端,我的应用程序是.NET。 我的客户将发送一个使用RSA公钥加密的XML文件,我需要使用.NET解密它 对于字符串说“Achinth Anand Gurkhi”,Java RSA加密方法生成以下加密字符串: e8s2Ap3R1AwoaKB7OPCwkf0vhAVGaQisdoq2Yo0BvwcQ7v3oVtMOVc5wsnIyNVOSZV543imwIiBer0HSXRe8PoBD4jj0tTxtLA+bdoR40oQJD2UmZ4OpAH3g92wLXYd4bVvjllcCPPc0tSr/nzEKeZHcnhf6cGpuwfKyFNbXW2vtlEfmRd+LGqlixPRlx1OnsSMNNw+u/5IBs8MauY4Uwq1Lovlgd9f/8WTOvq9ityr84vGLMRGs4wpC7+fFNk8jGuNZgoCDLZw2RqrUd8FBFvN2wCRZXnS7Wg4QjiBdmnq0OsAwK9OFwqnil7DNnDnlytlecR5oYkDhO2fC4FzFiA== 对于相同的字符串,.NET RSA加密方法使用Java程序使用的相同公钥生成以下加密字符串: iJO4hwhXGX27jzK87X9gxzzbKpgf7FKhe6UcY7eoiCpLskOatgCMZTm0aTDuwRZGJGbZCIZt+JI9X8LxwOLmIbv5LGyDq+a8jkrPu+pDRvg2uRuKeQj2yBRcp36X+xFf61ux24NaX2RTCY9YfJcUis9NjEkL0eQ3gC79xO0vuBjaUA2oYOt0Mlr7DmKE+b0lz25J/WJuSW83g2oZOlvJ4RnsrFChu0vHnkHCQo9JVjhMc+Onj7+lbI1CDgGq4XigZrHt+j564y3sc3z0oQYfdZkF3yUZrzd3sJjd9KmryHf52eVb9/qgL2/Za1jUwTzKIOvtG/bQpR2ka7Qu1ZqbxQ== 但是我使用匹配私钥的.NET解密方法能够将两者解密回相同的字符串“Achinth Anand Gurkhi”。 不同的加密字符串如何返回相同的值?

如何在我的gwt应用程序中导入java.security。*

我想用gwt开发一个插件。 它必须使用java.security。*来生成客户端密钥。 我已经提出了所有要求但它显示以下错误。 加载模块 coreservlets.GwtApp1 Loading inherited module ‘coreservlets.GwtApp1’ Loading inherited module ‘java.security.KeyPair’ [ERROR] Unable to find ‘java/security/KeyPair.gwt.xml’ on your classpath; >could be a typo, or maybe you forgot to include a classpath entry for source? [ERROR] Line 15: Unexpected exception while processing element ‘inherits’ 我在我的gwtapp1.gwt.xml文件中inheritance了所有相关的类,如“java.security.KeyPair” 我也在classpath本身包含jar。但仍然没有错误。 我该怎么办.plz建议这里是我的java代码 package coreservlets.client; import java.io.UnsupportedEncodingException; import java.security.KeyPair; import […]

在模数RSA密钥中获得额外1个字节,有时也用于指数

这是我的代码片段: int eValue = 79, t; int bitLength = 1024; // KeySize BigInteger e = new BigInteger(Integer.toString(eValue)); KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(bitLength); KeyPair kp = kpg.generateKeyPair(); KeyFactory kfactory = KeyFactory.getInstance(“RSA”); RSAPublicKeySpec kspec = (RSAPublicKeySpec) kfactory.getKeySpec(kp.getPublic(), RSAPublicKeySpec.class); System.out.println(“Byte Length is : ” + kspec.getModulus().toByteArray().length); String testString; try { testString = new String (kspec.getModulus().toByteArray() , “ISO-8859-1”); StringBuilder […]

无法使用开放SSL解密RSA数据

我尝试使用openssl创建的公钥在matlab中加密一些数据 我用以下方法创建了密钥: openssl genrsa -des3 -out private.pem 1024 openssl rsa -in private.pem -pubout -outform DER -out public.der 我使用这个matlab代码(使用Java库)加密我的数据: import java.security.spec.RSAPublicKeySpec import javax.crypto.Cipher; import java.security.KeyFactory import java.math.BigInteger fid = fopen(‘public.der’); a = fread(fid); key = java.security.spec.X509EncodedKeySpec(a); kf = KeyFactory.getInstance(‘RSA’); KEY = kf.generatePublic(key); cipher = Cipher.getInstance(‘RSA/ECB/PKCS1Padding’); cipher.init(Cipher.ENCRYPT_MODE, KEY) plaintextBytes = [24]; ciphertext = cipher.doFinal(plaintextBytes)’ ; fid2 = […]

如何将BigInteger传递给签名函数

在这里,我正在使用RSA实现数字签名。 我从文件中读取纯文本并获取MD5即纯文本的MessageDigest实例,并将该纯文本转换为BigInteger,此处应签署此bigInteger。 MessageDigest m1 = MessageDigest.getInstance(“MD5”); m1.update(bFile); byte [] digest1 = m1.digest(); for(int i=0; i < digest1.length ; i++){ System.out.println("b["+i+"]="+digest1[i]); } BigInteger bi = new BigInteger(digest1); //这里我不知道如何将BigInteger传递给Signature函数。 有人可以帮帮我吧。