如何在安卓系统中包含Spongy Castle JAR?
显然海绵城堡是使用完整版本的Bouncy Castle的Android替代品. 但是,在导入罐子时,我会得到各种"无法解决"错误,因为它依赖于Android未包含的软件包,主要是Javax.Mail,Javax.activation,javax.awt.awt.datatatransfer. P> 那么,解决这个问题是什么?对这个问题 and a>完全不应完全使用这些软件包,这个受欢迎的问题甚至不考虑找到一种使AWT回来的方法.那么海绵城堡如何依靠它们呢? 人们在使用海绵状城堡,对吗? 解决方案 这是两个非常简单的示例,说明如何在项目中加入海绵状城堡: github.com/rtyley/spongyled/spongycastle-eclipse-eclipse - eclipse github.com/rtyley/toy/toy/toy-android-android-android-android-android-ssh-agent - Maven
4 2023-05-16
编程技术问答社区
java.io.IOException。在Android项目的Maven构建中运行ProGuard时,无法处理类。
我使用名为ITEXT的库将新信息写入现有PDF.为了加密PDFS,Itext(对于Android)使用一个名为Spongycastle的库,该库是Bouncycastle的Android港口.不幸的是,Itext和Spongycastle都包含大量方法(15k+).在Android中,您可以使用的方法数量(64K)是一个困难的限制.幸运的是,Itext在海绵状罐子中不使用许多类. 我能够解压缩海绵状罐子,并删除Itext不使用的所有类并重新拉紧文件. 一切都很好,直到我在Maven构建中运行Proguard才能产生最终的APK.我得到以下对我没有意义的IOException. 您在解决此错误方面的帮助将不胜感激. 预先感谢您.我还包括了参考Bouncycastle的Proguard.cfg的部分. -keep class org.bouncycastle.crypto.** {*;} [DEBUG] Reading program jar [.m2/
2 2023-01-31
编程技术问答社区
强度无限的Jce和Android
我正在使用spongycastle(全面实现Bouncycastle for Android的Crypto函数),我有一个包含尺寸384键的BKS.我正在尝试使用keystore.getkey(别名,密码)来提取该键当你有一个关键的关键字.但是我跑进的是错误 java.security.UnrecoverableKeyException: no match. 做一点研究表明它可能是因为钥匙大小对于Android来说太大了,因为我的节目获得了大小128和256没有问题的其他键.通常在Java中,这将通过将"无限的强度"JCE导入Java安全文件夹,但是Android呢?如果没有,我可以将无限的力量JCE导入Android(我的胆量是否),是否有关于如何提取密钥的建议? Spongycastle解决了很多我的其他问题,我希望这里还有一个Spongycastle解决方案. 谢谢! 解决方案 所以在与之多的摔跤后,我想出了问题. 我未指定提供商,因此我的程序默认为
46 2023-01-31
编程技术问答社区
在安卓系统上加载时,Spongycastle缺少许多算法
在这个stackoverflow答案中,您可以看到要打印所有可用提供程序和相应算法的代码:如何找出我的JVM支持哪些算法[加密]? 我正在使用最新版本的spongycastle,当我要求获得spongycastle的算法("sc")上的Android 时,我只获得了一些算法.事实上,我得到这个非常有限的列表: provider: SC algorithm: PBEWITHMD5ANDDES algorithm: PBEWITHSHA256AND192BITAES-CBC-BC algorithm: OLDHMACSHA384 algorithm: PBEWITHHMACSHA algorithm: PBEWITHMD5ANDDES algorithm: PKCS12PBE algorithm: PBEWITHSHAAND128BITAES-CBC-BC algorithm: IES algorithm: PKIX algorithm: RFC3280 algorithm: I
18 2023-01-31
编程技术问答社区
我怎样才能生成一个有效的ECDSA EC密钥对?
我正在尝试使用Android中的Spongycastle生成ECDSA密钥对. 这是代码: static { Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); } public static KeyPair generate() { ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("prime256v1"); KeyPairGenerator generator = KeyPairGenerator.getInstance("ECDSA", "SC"); generator.initialize(ecSpec, new SecureRandom()); KeyPair keyPair = g.generateKey
28 2023-01-31
编程技术问答社区
如何解决安卓上海绵城堡的错误:找不到java.awt.datatransfer.DataFlavor类
我使用lib海绵城堡在Android上签署和加密邮件,根据此示例. /* Add BC */ Security.addProvider(new BouncyCastleProvider()); /* Open the keystore */ KeyStore keystore = KeyStore.getInstance("PKCS12", "SC"); keystore.load(new FileInputStream(pkcs12Keystore), password.toCharArray()); Certificate[] chain = keystore.getCertificateChain(keyalias); /* Get the private key to
30 2023-01-31
编程技术问答社区
如果针对安卓3.0及更高版本,使用SpongyCastle比BouncyCastle有什么优势吗?
如果我正确理解情况,海绵状的castle是重命名的,它的创建是为了使人们能够在Android上包括一个新版本的Bouncycastle,因为仅包括最新的Bouncycastle Jar会引起与旧的旧版本的冲突,并剥离了. Android随附的Bouncycastle的Down版本. 但是,显然是从3.0版(2011年至6年前!),Android Bouncycastle套件被更名为com.android.org.bouncycastle,因此,如果您包括常规org.bouncycastle,这将不再与Pre -Pre -Pre -Pre包装剥离的Bouncycastle,您可以以这种方式使用最新版本. 令我感到困惑的是,似乎海绵状的项目仍然很活跃,每当我搜索" Android上的Bouncycastle"或任何相关的内容时,我都会从过去几年中获得很多结果,这些结果建议使用Spongycastle,引用,阶级冲突问题作为推理,即使(显然)在2011年一直解决.在运行较早版本An
14 2023-01-31
编程技术问答社区
为什么Google Cloud Key Management Service'的Java客户端库不支持Android?
这是另一个链接.) ) 只使用 解决方案 htttps:/GOOGLECLOUDPLATFORM/GOOGLE-CLOUD-JAVA/essess/1696#ISSUECOMMENT-284464059 是我能找到的最权威的解释.引用garrettjonesgoogle: 我们没有做任何特定的工作来使Google-cloud-java与Android兼容,并且有许多已知问题(如您所发现的).一流的Android支持将在以后出现. 我们当前推荐的方法是拥有您自己的服务器(例如,在App Engine上),该服务器拨打了GCP,并且您自己的Android应用程序会拨打服务器.原因是Google-cloud-Java仅支持2LO AUTH(基于服务符号),而不是3LO AUTH(基于用户估计).如果您通过2LO AUTH从Android应用程序中拨打电话,从理论上讲,某人可以从您的应用程序中窃取您的服务凭据并在自己的应用中使用它们.但是,这不是3lo的问题.
4 2023-01-31
编程技术问答社区
用java导出RSA公钥到PEM字符串
因此,我正在使用海绵状城堡(Android)为RSA公共密钥生成PEM编码的字符串,该键将上传到服务器. 这就是我目前正在做的: PublicKey publicKey = keyPair.getPublic(); StringWriter writer = new StringWriter(); PemWriter pemWriter = new PemWriter(writer); pemWriter.writeObject(new PemObject("RSA PUBLIC KEY", publicKey.getEncoded())); pemWriter.flush(); pemWriter.close(); return writer.toString(); 现在,您可能会说我不确定如何构造PemObject,或者是否有更轻松的方法来执行此操作. 使用弹性案例时,我曾经这样做 StringWr
14 2023-01-31
编程技术问答社区
java中的公钥对象比较
我有两个publicKey对象.我想比较使用Java Security API或Boncy Castle API的最新对象.我该如何实现? 解决方案 您可以使用equals if (!key.equals(copyKey)){ System.out.println("not equals!"); } 或检查键的主题 if (key.hashCode() != copyKey.hashCode()) { System.out.println("public key hashCode check failed"); } 或比较两个公共钥匙的十六进制字符串 String encodedKey1 = new String(Hex.encode(key1.getEncoded())); String encodedKey2 = new String(Hex.encode(key2.getEncoded())); if (!encodedKey1.
8 2023-01-31
编程技术问答社区
安卓系统使用RSA公钥对字符串进行加密
我正在一个项目中工作,必须使用RSA公钥加密密码.我尝试了许多样品和解决方案,如下所示 android rsa从公共字符串 使用Spongycastle rsa 不幸的是,我的解决方案都没有解决.如果我尝试进行任何工作 ,我会反复进行以下例外 错误日志: 04-21 07:50:57.876 18842-18842/com.takeoffandroid.passwordencryption W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphic
12 2023-01-31
编程技术问答社区
客户端证书在安卓系统中不工作-如何调试?
我正在尝试为Android应用程序实现一个客户证书,到目前为止,没有多大成功 - 似乎这个功能是,如果可能的话,非常硬.我实现的完整流程在我之前的问题. 我遵循了那里的代码,代码这个博文,描述相同的场景,或多或少,无需结果. 什么不起作用:在android客户端之间打开ssl连接(HttpsURLConnection),服务器会导致服务器返回 403状态代码 Afaik,这个403是因为服务器没有得到或不相信它得到的客户端证书,而且我不确定如何调试它. 工作是什么: 创建PKCS#10请求,将其发送到CA并获取签名的PKCS#7( P7B ) 将收到的 p7b 存储在密钥库中的私钥,并将其导出到PKCS#12( P12 ) ( moldsolyning )从设备上挑选 p12 ,在Windows上安装它,与服务器联系并获取一致(200 HTTP-OK)响应. 我改变了什么:从我得到的代码样本(从这里和这里),我不得不改变一些东西.我正在使用httpsur
12 2023-01-31
编程技术问答社区
如果你知道曲线名称和原始私钥/点,如何构建私钥?
要求:对于给定的命名曲线,请尽可能少的数据发送,以便接收器可以构建EC PrivateKey. 我目前正在使用Android上的Bouncycastle/spongycastle.这就是我所理解的. KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC"); ECGenParameterSpec ecGenParameterSpec = new ECGenParameterSpec("secp112r2"); keyGen.initialize(ecGenParameterSpec, new SecureRandom()); KeyPair keyPair = keyGen.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); // privateKey.getEncoded() -> gives DER encoded private
8 2023-01-31
编程技术问答社区
从椭圆曲线点的x和y值生成公钥
我正在尝试在我的应用程序中生成一个共享的秘密: public static byte[] generateSharedSecret(PrivateKey privateKey PublicKey publicKey) { KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH", "SC"); keyAgreement.init(privateKey); keyAgreement.doPhase(publicKey, true); return keyAgreement.generateSecret(); } 这是正常工作,但我在这里使用的PublicKey应该来自后端. 后端只会向我发送椭圆曲线上的一个点的x和y值,现在我应该从中生成PublicKey.但我只是无法弄清楚!如何从这两个值创建PublicKey实例? 解决方案 它实际上非常简单!但除了x和y值,您还需要
42 2023-01-31
编程技术问答社区
使用Bouncy Castle的SSL进行安卓到服务器的通信
我明白这是一个不是那么困难,但很不幸的是,我昨天以来就陷入了战斗,我遵循这个 Android 教程中的相互身份验证,在资源中放置密钥库并尝试通过SSL连接到我的服务器,但获取以下异常 java.lang.runtimeexception: org.spongycastle.jcajce.provider.Asymmetric.x509.certificateFactory $ ExcertificateException 我已将我的sslapptruststore.pfx文件放在res/raw/sslapptruststore.pfx下 并使用这段代码 try { KeyStore clientCert = KeyStore.getInstance("PKCS12"); clientCert.load(getResources().openRaw
40 2023-01-31
编程技术问答社区
从Base64编码的字符串中检索ECC公钥
我一直在尝试使用Base64编码的ECC公钥创建java.security.PublicKey的实例. MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { byte[] data = decodePublicKey("AsIAEFjzIcX+Kvhe8AmLoGUc8aYAEAwf5ecREGZ2u4RLxQuav/A="); PublicKey publicKey = loadPublicKey("secp128r1", data); Log.d(TAG, publicKey.toString()); } catch (S
30 2023-01-22
编程技术问答社区
使用SpongyCastle的RSA
我对加密的了解非常基本,因此对我的任何无知都表示歉意. 在一个Android应用中,我目前正在尝试使用 spongycastle库和标准java.security libs: echo 'test' | openssl rsautl -encrypt -pubin -inkey test.pub | base64 > encrypted_file 应该注意的是,命令中对文件和从文件中的读取/写作是 not 将要实现的,我将公共密钥(即test.pub)作为base64编码字符串base64key在我的代码中. 我尝试了以下内容,但可以肯定它不起作用: static { Security.insertProviderAt(new BouncyCastleProvider(), 1); } //...more code here byte[] pka = Base64.decode(base64key); X509EncodedKe
8 2022-12-24
编程技术问答社区
使用Spongy Castle库在ECDH中生成一个密钥对
我是台湾的学生.我正在学习如何在Android中编程. 但我对使用海绵城堡库在ECDH中生成密钥对的问题. 当我启动应用程序时,Android系统显示该应用程序已停止. 这是我的代码和我的导入 public class MainActivity extends Activity { String msg,Test; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button generator= (Button) findViewById(R.id.key_pair_generator); generator.setOnClickList
22 2022-11-25
编程技术问答社区
ECC算法的密钥不匹配
我正在尝试在Android上实现ECC算法.我目前正在使用海绵城堡来实施它. 关键世代锥段如下: KeyPairGenerator kpg = null; try { kpg = KeyPairGenerator.getInstance("ECIES");// Do i have to do any changes here? } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } ECGenParameterSpec brainpoolP160R1 = new ECGenParameterSpec("brainpoolP160R1"); try { kpg.initialize(brainpoolP160R1); } catch (InvalidAlgorithmParameterException) { } KeyPair kp = kpg.generateKeyPair
14 2022-10-26
编程技术问答社区
用SpongyCastle的PKCS#10的客户端证书创建一个Https连接
目标 我正在努力实现与客户端证书的通信. 步骤1:创建PKCS#10请求(CSR)并将其提供给我的服务器以签名.服务器联系人将CSR传递给CA,CA符号并返回PKCS#7(带有符号的PKCS#10和CA证书). 第2步:创建一个PKCS#12,安全地将其存储在Android设备上 步骤3:创建SSL连接,以便根据证书对客户端进行身份验证. 现在,步骤1使用Spongycastle 1.50.0.0完美地工作,但我陷入了其他步骤...... 我目前正在获得一个SSL握手异常,但我有感觉我应该重新思考我的实施. 问题 有谁知道如何实现流程?如何创建和存储客户端证书所需的任何功能,并使用Android的SSLContext以及如何创建此类SSLContext? 我试过的东西到目前为止 我的第一次尝试是使用 keychain ,但我们想避免用户交互,如那样所述.我的第二次尝试是遵循丰富的freedman的步骤,但我不知道如何从PKCS#7和私
22 2022-10-24
编程技术问答社区