草庐IT

密码学

全部标签

java - Java中的简单凯撒密码

嘿,我正在使用公式[x->(x+shift-1)mod127+1]在Java中制作一个简单的凯撒密码我想让我的加密文本具有除控制字符之外的ASCII字符(即从32-127)。如何避免在加密文本中应用0-31的控制字符。谢谢。 最佳答案 这样的事情怎么样:publicStringapplyCaesar(Stringtext,intshift){char[]chars=text.toCharArray();for(inti=0;i=32&&c诚然,这将127视为非控制字符,但事实并非如此……您可能希望调整它以将范围保持为[32,126]

java - Jetty 日志中的 SSL_NULL_WITH_NULL_NULL 密码套件

我正在使用带有HTTPS和有效证书的Jetty,但我不确定它是否正确,因为服务器日志中的密码套件似乎是SSL_NULL_WITH_NULL_NULL。然而,客户端日志看起来不错。长话短说:我附上了一个需要Jetty-7.6.10的Java示例和两个用于创建keystore和信任库的脚本。JettyHttpsForStackOverflow同时或单独运行客户端和服务器以去复杂化日志。create-chains.sh脚本创建keystore和信任库。keystore包含一个由临时keystore生成的根证书颁发机构结尾的链。它使用证书颁发机构和中间证书复制真实案例。create-singl

java - 创建帐户时,如何将密码哈希安全地存储在内存中?

我们基于Web的应用程序将用户帐户绑定(bind)到使用帐户创建期间指定的密码的用户。在Java的情况下,在将其哈希值保存在数据库中之前,如何安全地处理密码。更具体地说,如何确保包含密码的字符串在足够短的时间间隔内被垃圾回收? 最佳答案 如果有可能(在web应用程序中可能比较困难),最好将密码存储在字符数组中,而不是存储在字符串中。如果您完成存储密码,您可以使用Array.fill()在内存中覆盖它。并通过丢弃它使垃圾收集器可以使用该引用:Arrays.fill(password,'');password=null;我只是注意到取消

java - 如何使用另一个字符串作为密码加密/解密一个字符串?

我正在制作一个简单的程序,它接受在一个文本框中输入的文本,并接受另一个文本框中的密码,然后对其进行某种简单的加密并将其保存到一个文件中。之后,用户应该能够再次打开该文件并提供用于加密它的密码,它应该会吐出原始文本。现在我正在拿绳子。把它分成一个字符数组,然后对密码做同样的事情。之后,我获取密码,将所有这些字符转换为整数,找到所有这些的平均值,并将其用作原始文本中字符的偏移量。有点像:textChars[1]=(char)((int)textChars[1]+offset);然后我可以对加密字符串做相反的操作:encryptedChars[1]=(char)((int)encrypted

Java密码加密

我正在尝试学习如何使用Java进行基于密码的加密。我在网上找到了几个例子,但在StackOverflow上还没有。这些例子对我来说有点解释,特别是关于算法选择。似乎有很多传递字符串来说明使用什么算法,但很少有文档说明字符串的来源及其含义。而且似乎不同的算法可能需要KeySpec类的不同实现,所以我不确定哪些算法可以使用我正在查看的PBEKeySpec类。此外,这些示例似乎都有些过时,许多示例要求您获得以前不属于JDK甚至第三方实现的较旧的加密包。谁能简单介绍一下我需要做什么来实现加密(字符串数据,字符串密码)和解密(字节[]数据,字符串密码)? 最佳答案

java - 有人可以从 Java 应用程序中窃取密码吗?

假设有一个保存明文密码的字符串变量。是否有可能使用内存转储读取此密码。(假设使用CheatEngine。)我对这个JVM事情感到困惑。JVM是否对此提供某种保护。如果不是,我需要采取什么做法来避免这种“窃取”。实际威胁是特洛伊木马;将内存转储的片段发送给外部方。 最佳答案 如前所述,是的,任何人都可以通过各种方式提取密码。加密密码并没有真正的帮助——如果它被应用程序解密,那么解密的形式也会在某个时候出现,再加上解密key(或代码)本身就会成为一个漏洞。如果它以加密形式发送到其他地方,那么只知道加密形式就足以欺骗交易,所以这也无济于事

java - 如何为 Jetty SSL 设置密码套件的顺序?

这个问题在这里已经有了答案:Howtospecifyserver-preferredorderofSSLciphersuitesforJava?(2个答案)关闭8年前。为了服务我的应用程序,我使用Apache或嵌入式Jetty。对于Jetty,我选择了一些我想使用的密码套装并使用setIncludeCipherSuites(String[]names)进行设置。在Jetty文档(http://wiki.eclipse.org/Jetty/Howto/CipherSuites)中,我发现:请注意,您必须按优先顺序指定密码套件。但是https://www.ssllabs.com/sslte

java - 对于密码过期的任何数据源,都需要基于 Spring 的应用程序的通用解决方案

我不知道如何为以下场景找到解决方案。我们有一个新的要求,即从属性中删除数据库密码,即使它是用Jasypt库或一些其他算法加密的。我们不需要将密码存储在属性或LDAP中,而是需要从Cyberark动态获取它.密码可能会在一两天、一周或一个月内过期。这完全取决于密码过期政策。我们有多个项目。有些是基于网络的,有些是独立的。我们想编写一个通用的解决方案。如何覆盖任何数据源的getConnection方法,如Spring数据源、ApacheBasic数据源(它支持扩展类)、C3P0、DBCP或HikariCP而不影响它们行为并在点击super.getConnection()之前设置密码?sup

java - 在 Ubuntu OpenJDK 7 上启用密码

我编写了以下Java程序来将启用的密码转储到JVM中:importjava.security.KeyStore;importjavax.net.ssl.KeyManagerFactory;importjavax.net.ssl.SSLContext;importjavax.net.ssl.SSLSocket;importjavax.net.ssl.TrustManagerFactory;publicclassListCiphers{publicstaticvoidmain(String[]args)throwsException{SSLContextctx=SSLContext.get

java - 如何在 log4j.properties 中加密密码?

有什么方法可以在log4j.properties中加密密码以下是我的appenderlog4j.appender.DB=org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.DB.URL=jdbc:mysql://localhost:3306/anilpracticelog4j.appender.DB.driver=com.mysql.jdbc.Driverlog4j.appender.DB.user=rootlog4j.appender.DB.password=P@ssw0rdlog4j.appender.DB.sql=INSERTINTO