jjzjj

java - 每条消息都需要 Cipher.init() 吗?

假设两个客户端正在来回交换安全消息。必须为每条消息每次都运行此block,或者任何步骤是否可以在开始时只执行一次:cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,keySpec);output=cipher.doFinal(content);我想借用一些上下文——虽然我(还)没有完全理解内部结构,但据我所知,出于安全目的,更改每条消息的IV很重要。所以我认为这个问题的答案将取决于该步骤是否发生在doFinal()阶段或init()阶段......?

Java cipher.doFinal() 写入额外的字节

我正在使用JavaCipher和AES实现加密/解密。除了在调用doFinal()时多写了5个字节外,一切都运行良好。因此,我最终得到了一个正确解码的字符串,并附加了5个额外的字节。我认为原因是正在写入整个16字节block。我看到写入了3个16字节的block,包括最后一个。输入的加密文件为64字节。未加密的文本应为43个字节。doFinal的文档表明它可以返回写入输出缓冲区的字节数。但是,它是0,16,16,16。我已经尝试了各种形式的doFinal和更新,但行为没有任何变化。它写出一个完整的block在某种程度上是有道理的,因为大多数这些算法都是这样运行的。但是,如果它不告诉我输

java - 如何在java中使用RSA key 加密解密

我需要用openssl生成的rsaprivatekey.pem和rsapublickey.pemkey替换从Unix到java代码的加密和解密步骤我生成keyopensslgenrsa-out/tmp/rsaprivatekey.pem-des31024opensslrsa-in/tmp/rsaprivatekey.pem-pubout-out/tmp/rsapublickey.pem我在unix中使用key(我需要在java中使用)echo"Texttoencript"|opensslrsautl-encrypt-inkey/tmp/rsapublickey.pem-pubin-ou

java - Java中用私钥加密解密

在我阅读了有关密码学(对称和非对称)方法的文章之后。许多文章都在讲述私钥用于加密和解密数据。公钥用于加密数据。但是当我尝试开始在Java中实现时,我无法使用私钥加密和解密数据(我使用的是RSA算法)?如果可以请给我一个链接。如果不支持,请回答为什么不支持?//加密Cipherencrypt=Cipher.getInstance("RSA");encrypt.init(Cipher.ENCRYPT_MODE,privatekey);byte[]encryptedMessage=encrypt.doFinal(msg.getBytes());//解密Cipherdecrypt=Cipher

java - BASE64Encoder 是内部 API,可能会在未来的版本中删除

这个问题在这里已经有了答案:howtoavoidwarningfortheBase64?(2个答案)EncodingasBase64inJava(19个回答)关闭6年前。我试图解决这个问题,但我从来没有找到适合我的解决方案。问题是我收到有关BASE64Encoder的警告。如果没有BASE64Encoder,还有其他方法可以做到这一点吗?代码:publicstaticStringEncrypt(StringData)throwsException{Keykey=generateKey();Cipherc=Cipher.getInstance(ALGO);c.init(Cipher.EN

使用了不受支持的协议。 ERR_SSL_VERSION_OR_CIPHER_MISMATCH的问题解决办法

windwos2008R2使用IIS部署的项目申请使用https协议的时候,通过安全加密协议访问网站提示不受支持的协议错误原因分析这种错误通常表示客户端和服务器之间存在协议版本或加密套件不兼容导致在SSL(SecureSocketLayer)1.协议版本不兼容:客户端和服务器可能支持不同版本的SSL协议,导致协议版本不匹配。2.加密套件不匹配:客户端和服务器可能支持不同的加密套件,导致加密套件不匹配。例如,如果客户端只支持使用AES加密算法,而服务器只支持使用RC4加密算法,则它们无法协商一种相同的加密套件。3.协议配置不正确:客户端和服务器的SSL协议配置可能不正确,例如使用不安全的协议版本

c++ - 链接错误 : undefined reference to EVP_CIPHER_CTX_ and EVP_CIPHER_CTX_init

我在我的代码中使用了crypto++。我不想使用它的依赖项,所以我尝试在我的文件夹中导入crypto++文件并将它们包含在我的.cpp文件中我有以下错误:TEST.cpp:(.text+0x89a0):undefinedreferenceto`EVP_CIPHER_CTX_init'TEST.cpp:(.text+0x8cb0):undefinedreferenceto`EVP_aes_128_cbc'TEST.cpp:(.text+0x8cdd):undefinedreferenceto`EVP_CipherInit_ex'TEST.cpp:(.text+0x8d49):undefi

java - Apple 收据验证时的连接重置 (Java 8)

我正在使用Java服务器通过其validationserver验证Apple付款收据.我们大约50%的请求因“SocketException:连接重置”而​​失败,以获取有效收据(稍后重试成功)。我在另一台部署在Java7上的服务器上没有遇到这种行为,但在部署到Java8上时开始遇到这种情况。我看到默认的TLS协议(protocol)在Java8中从TLSv1更改为TLSv1.2,因此我尝试更改默认协议(protocol)以使用Java7的默认协议(protocol),但没有看到任何改进。这是我使用的JVM属性:-Djdk.tls.client.protocols="TLSv1,TLS

ios - 将 Ruby 代码从苹果文档 (iPhoneOTAConfiguration) 转换为 Java

我正在为iOSMDM开发网络应用程序。其中,mobileconfig中的有效负载在发送到设备之前将被加密。Apple文档givex以下代码为例,它在Ruby中运行良好。但是,我无法在Java中实现相同的功能。OpenSSL::PKCS7.encrypt(p7sign.certificates,payload,OpenSSL::Cipher::Cipher::new("des-ede3-cbc"),OpenSSL::PKCS7::BINARY)我使用的Java代码如下:PublicKeypublicKey=x509cert.getPublicKey();//publinKeyiskeye

运维系列:此站点的连接不安全,使用不受支持的协议。ERR_SSL_VERSION_OR_CIPHER_MISMATCH(不支持的协议 客户端和服务器不支持常用的 SSL 协议版本或密码套件。)

此站点的连接不安全,使用不受支持的协议。ERR_SSL_VERSION_OR_CIPHER_MISMATCH(不支持的协议客户端和服务器不支持常用的SSL协议版本或密码套件。)前言一、解决方法一1.MicrosoftEdge浏览器→点击右上角的三个点→选择设置2.选择外观→打开InternetExplorer模式(IE模式)按钮3.打开MicrosoftEdge浏览器→输入自己要访问的IP地址或者是链接→回车访问→点击右上角的IE图标(在InternetExplorer模式下的重新加载选项卡)4.访问成功二、解决方法二1.打开控制面板→点击网络和Internet2.选择Internet选项3.