草庐IT

【密码学基础】RSA加密算法

1RSA介绍RSA是一种非对称加密算法,即加密和解密时用到的密钥不同。加密密钥是公钥,可以公开;解密密钥是私钥,必须保密保存。基于一个简单的数论事实:两个大质数相乘很容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥;而两个大质数组合成私钥。2密钥对的生成step1生成N(公钥和私钥的一部分)首先选取两个互为质数的数ppp和qqq(p≠q,gcd(p,q)=1p\neqq,gcd(p,q)=1p​=q,gcd(p,q)=1),于是:N=p∗qN=p*qN=p∗qstep2生成L根据欧拉函数,不大于NNN且与NNN互质的数是p−1p-1p−1和q−1q-1q−1

最详细解决Unable to negotiate with XXX port :no matching host key type found.Their offer: ssh-rsa,ssh-dss

1、切换为root用户执行cd/2、执行 cd~#切换到用户主目录然后执行ls-a#查看隐藏文件看是否有.ssh文件夹 3、如果没有.ssh文件夹 执行mkdir~/.ssh#创建该文件4、如果有.ssh文件夹 执行ls-a~/.ssh#查看.ssh文件夹下有没有config文件5、如果没有config文件 执行touch~/.ssh/config#创建该文件6、如果有config文件 #以下是配置Host*HostkeyAlgorithms+ssh-rsaPubkeyAcceptedKeyTypes+ssh-rsa如果您使用的是vi编辑器,可以按照以下步骤将上述配置写入~/.ssh/conf

java - ArrayIndexOutOfBoundsException : too much data for RSA block

我的android应用程序有一些问题。我正在尝试与RSA加密/解密相关的应用程序。这是我的问题:我可以清楚地加密短句,但是当我尝试将此消息解密为原始文本时,我给出了一个错误(“RSAblock的数据太多”)。而且,如果我想加密一个长句子,我也会遇到同样的错误。我搜索了这个问题,并在这个网站上找到了一些解决方案:Site1Site2Site3但是我什么都不懂,这些解决方案太复杂了。我该如何解决这个问题,谁能给我一个更简单的解决方案?谢谢。编辑:这些是我用于该项目的代码块。publicStringRSAEncrypt(Stringplain)throwsNoSuchAlgorithmExc

RSA 签名与验签

背景由于最近公司组织一些技术分享,有些同学分享过程中,提到一些非对称加密算法,对于公钥和私钥作用的介绍是有些不恰当的地方,比如:私钥加密,公钥解密在网上我也搜索了相关内容,发现不少网友,甚至国内大厂以及有些境外的技术文章,都在RSA签名的过程中用了私钥加密(encrypt),公钥解密的说法,这种说法可能会方便理解数字签名一些细节,但是对加密和签名这两个不同的概念造成混淆,下面我们会介绍RSA以及它在签名和加密的关系,下面的大部分内容是翻译一些参考内容,这些参考内容的链接也会放到文末,大家有兴趣的可以看一下。RSA算法这节会先介绍一下RSA算法,但是为了不让我们陷入数学的细节,我们对部分计算方法

java - 错误 :0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag when importing RSA public key

我已经生成了一对RSAkey(公钥和私钥)。现在出于测试目的,我试图将String表示中的公钥导入PublicKey以在Android项目中使用它,以便将RSA中的加密消息发送到一个远程服务器,随后将使用私钥对其进行解密。publicstaticStringencryptDataRSA(finalStringdata)throwsIOException{finalbyte[]dataToEncrypt=data.getBytes();byte[]encryptedData=null;try{finalStringkeyStr="-----BEGINPUBLICKEY-----\n"+"

android - 在 Android 中安装 PEM 证书的正确方法

我正在开发一个Android项目。我有一个PEM证书字符串:-----BEGINCERTIFICATE-----MIIEczCCA1ugAwIBAgIBADANBgkqhkiG9w0BAQQFAD..AkGA1UEBhMCR0IxEzARBgNVBAgTClNvbWUtU3RhdGUxFDASBgNVBAoTC0..0EgTHRkMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5IENlcn..XRpb24gQXV0aG9y...MANYLINES...It8una2gY4l2O//on88r5IWJlm1L0oA8e4fR2yrBHX..adsG

java - 获取错误 java.lang.ArrayIndexOutOfBoundsException : too much data for RSA block

我有私有(private)pemkey文件,我正在使用该文件对数据进行签名和加密。签名工作正常,我也可以在另一个平台上进行验证,但是在加密数据时,我收到以下错误:04-0409:55:51.821:E/AndroidRuntime(2725):FATALEXCEPTION:Thread-10204-0409:55:51.821:E/AndroidRuntime(2725):java.lang.ArrayIndexOutOfBoundsException:toomuchdataforRSAblock04-0409:55:51.821:E/AndroidRuntime(2725):atco

android - RSA 公钥在 android 中的实现

我已经使用库在php、javascript和android应用程序中实现了RSA加密:phpseclib用于php端pidcrypt用于javascriptbouncrycaSTLeversion(bcprov-jdk14-151)foranrdroidserviceprovider我的加密机制如下:user->request->publickey->server->generate(publickey,privatekey)andsaveprivatekeyintoDatabase->server->sendpublickey->user->user->encryptdata->se

android - 如何在我的 Android 应用程序二进制文件中包含 Google Play 服务 RSA 公钥?

首先,我是一名iOS开发者。我不是安卓专家。我需要维护一个AndroidApp项目。关于应用程序签名问题,iOS和Android之间的规则是如此不同!目前,我知道如何签署我的Android应用并将其发布到Googleplay。但是,我在GoogleplayDeveloperConsole->我的应用程序->服务和API中找到了这个:他们给了我这个公钥。我的问题是:如何以及在哪里使用这个公钥?我已经通过ADT的向导签署了我的应用程序。 最佳答案 这是一个可选的使用项,如果您想使用它来强制执行每个应用程序的许可要求,请查看此处Googl

android - Android 上的 RSA 加密和解密字符串

几周以来我一直在阅读页面和页面,但我找不到解决方案。我希望“仅”:制作我自己的公钥和私钥以加密和解密我的PHP网站和Android应用程序之间的字符串(如http://www.example-code.com/android/rsa_generateKey.asp但我如何存储和使用生成的key?)在我的应用程序上加密一个字符串从我的网站解密字符串加密我网站上的字符串从我的应用程序中解密字符串我刚刚找到了一个可以简单完成这项工作的类(http://www.example-code.com/android/rsa_encryptStrings.asp),但它不是免费的,要使其在PHP上运行