草庐IT

RSA算法

全部标签

java - 应该如何通过 HTTP 公开 RSA 公钥?

我们需要将RSA公钥公开为HTTP资源-所以http://myhost.com/publickeys/akeyid返回公钥。我想用正确的Internet媒体类型返回它。那应该是什么?我承认我发现加密RFC相当难以理解。作为奖励,我如何使用java.security标准库轻松地与该格式进行转换?(使用java.security.RSAPublicKey.getEncoded()序列化为字节并使用java.security.spec.X509EncodedKeySpec反序列化那些相同的字节,可以很容易地往返于https://www.rfc-editor.org/rfc/rfc3280#s

java - java.lang.Object的hashCode具体使用的是什么算法

在JVM中使用什么算法来实现java.lang.Object的隐式hashCode()方法?[OpenJDK或OracleJDK在答案中是首选]。 最佳答案 它依赖于实现(而且在很大程度上,算法完全取决于实现,只要它是一致的。)但是,根据答案here,你可以看到nativesourcefile其中哈希是在OpenJDK7中生成的(查看get_next_hash()函数),它实际上指定了此特定版本中的许多可能算法://Possibilities://*MD5Digestof{obj,stwRandom}//*CRC32of{obj,s

java - Java Card 中的 ALG_RSA_NOPAD

为了在JavaCard中高效地计算一个正方形,我想使用指数等于2且模数大于预期结果的算法ALG_RSA_NOPAD(因此模块化缩减没有效果)。但我无法使用算法ALG_RSA_NOPAD。事实上,当我调用方法doFinal()时,我得到了一个CryptoException,它是ILLEGAL_VALUE。在JavaCard2.2.2规范中,它说:CryptoException.ILLEGAL_USEifoneofthefollowingconditionsismet:•ThisCipheralgorithmdoesnotpadthemessageandthemessageisnotblo

java - 光学聚类算法。如何获得最好的epsilon

我正在实现一个需要对地理点进行聚类的项目。OPTICS算法似乎是一个非常好的解决方案。它只需要2个参数作为输入(MinPts和Epsilon),分别是将它们视为一个簇所需的最小点数,以及用于比较两个点是否在同一簇中的距离值。我的问题是,由于点的种类繁多,我无法设置固定的epsilon。看看下面的图片。相同的点结构但不同的尺度会产生非常不同的结果。假设设置MinPts=2和epsilon=1Km。在左边,算法会创建2个簇(红色和蓝色),但在右边它会创建一个包含所有点的单个簇(红色),但我想在右边也获得2个簇。所以我的问题是:是否有任何方法可以动态计算epsilon值以获得此结果?编辑20

java - RSA/ECB/OAEPWithSHA-256AndMGF1Padding 但 MGF1 使用 SHA-256?

我在Oracle的Java标准加密提供程序中找到了困难的方法Ciphercipher=Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");使用通过SHA-1实例化的MFG1;SHA-256仅用于散列标签(实际上是空的)。我发现在MFG1中实际使用SHA-256的唯一解决方案(在answer和comment的帮助下)是使用Cipher.init的替代形式:cipher.init(Cipher.DECRYPT_MODE,privKey,newOAEPParameterSpec("SHA-256","MGF1",MGF1Pa

java - 从头开始实现自定义凝聚算法

我了解凝聚聚类算法,它以每个数据点作为单独的集群开始,然后组合点形成集群的方式。现在,我有一个n维空间和几个数据点,这些数据点在每个维度上都有值。我想根据业务规则对两个点/集群进行聚类,例如:如果跨维度1的集群之间的距离如果满足跨维度1的规则并且满足跨维度2的规则,则将它们聚类而不用担心其他维度.......和类似的自定义规则。此外,我有自己的方法来定义和测量任何特定维度上任何两个集群之间的距离。维度可能只包含字符串,我想定义自己的字符串距离度量。在另一个维度中,它可能包含位置的名称,并且该维度上两点之间的距离是命名位置之间的地理距离,其他维度也是如此。是否有一个框架/软件可以让我实现

java - Tic Tac Toe 的 Minimax 算法中的错误

我目前正在尝试自学Minimax算法,并尝试在井字游戏中用Java实现它。但是我的算法中有一个错误,我无法弄清楚是什么导致了它。下面是完整的源代码(对不起,文字墙!):publicclassTicTacToe{privatestaticbooleangameEnded=false;privatestaticbooleanplayer=true;privatestaticScannerin=newScanner(System.in);privatestaticBoardboard=newBoard();publicstaticvoidmain(String[]args){System.o

java - 在 Java 中使用 AES 256 加密 RSA 私钥

我正在用Java编写一个安全的文件共享应用程序。总体架构如下所示:用户希望加密文件以在多个用户之间安全共享。应用程序在客户端生成一个随机UUID并将其用作AES256密码,并使用UUID加密数据。然后使用每个人的公钥对UUID进行RSA加密。每个共享用户一次。每个加密的UUID数据包都作为文件的一部分存储在自定义文件头中。然后文件会上传到其他人可以访问的服务器。每个用户都可以使用他们的私钥来读取AES加密key并解密文件。这里是陷阱。用户的私钥必须加密并存储在我们服务器的数据库中,以便可以从多个位置访问文件。在上传到服务器之前,私钥将使用客户端上用户选择的密码进行加密。我想使用AES2

java - 使用 Chudnovsky 算法计算圆周率时出错 - Java

我一直在尝试编写一个简单的程序来使用Chudnovsky算法计算圆周率,但是我总是得到错误的值输出。我写的最新代码如下并输出:9.642715619298075837448823278218780086541162343253084414940204168864066834806498471622628399332216456e11谁能告诉我哪里做错了。正如PeterdeRivaz指出的那样,我正在丢弃b的值,固定输出现在是:-1.76779979383639157654764981441635890608880847407921749358841620214761790018058‌

java - 匹配算法

我有一张铅笔list和一张橡皮list。目的是检查是否所有的橡皮都可以放在铅笔上。橡皮擦可能适合多支不同的铅笔。铅笔最多可以有1个橡皮擦。如果我只是循环遍历所有橡皮并将它们放在铅笔上,我最终会得到适合所有未占用铅笔的橡皮,即使有一种解决方案可以将所有橡皮都放在铅笔上。我可以使用什么算法来找出适合铅笔上所有橡皮的组合?publicclassEraser(){publicbooleanmatches(Pencilp){//unimportant}}publicclassPencil(){}我的尝试publicbooleandoMatch(Listerasers,Listpencils){f