Tag: 密码

使用密码短语的CBC的Java AES

我想用Java实现256密钥AES和CBC加密。 收件人发送了256位密码作为字符串’absnfjtyrufjdngjvhfgksdfrtifghkv’,它使用这个openssl命令完美地工作: echo test | openssl enc -aes-256-cbc -a -k ‘absnfjtyrufjdngjvhfgksdfrtifghkv’ base64格式的输出为:U2FsdGVkX1 / yA4J8T + i1M3IZS + TO / V29rBJNl2P88oI = 当我描述它时,它返回原始输入字符串: echo U2FsdGVkX1/yA4J8T+i1M3IZS+TO/V29rBJNl2P88oI= | openssl enc -d -aes-256-cbc -a -k ‘absnfjtyrufjdngjvhfgksdfrtifghkv’ 我的问题是我无法使我的加密工作在java中并使用上面的命令解密它。 我知道我的密钥应该使用我的密码生成。 下面是我的代码示例,其中IV是随机生成的,密钥是使用密码和随机盐生成的。 byte[] input = “test”.getBytes(); String passphrase = “absnfjtyrufjdngjvhfgksdfrtifghkv”; int saltLength = 8; SecureRandom random = new SecureRandom(); //randomly generate salt […]

Adler32非常快速地重复

我正在使用adler32校验和算法从数据库ID生成一个数字。 因此,当我在数据库中插入一行时,我会获取该行的标识并使用它来创建校验和。 我遇到的问题是我刚刚在数据库中插入了207个后才生成重复校验和。 这比我预期的要快得多。 这是我的代码: String dbIdStr = Long.toString(dbId); byte[] bytes = dbIdStr.getBytes(); Checksum checksum = new Adler32(); checksum.update(bytes, 0, bytes.length); result = checksum.getValue(); 我正在做什么/怎么做有什么问题? 我应该使用不同的方法来创建唯一的字符串吗? 我这样做是因为我不想在URL中使用db id …对db结构的更改将破坏世界上的所有链接。 谢谢!

在JTextFIeld(Java Swing)中隐藏/显示密码

所以我一直在研究密码强度检查器,它的工作方式是用户在文本字段中输入一些随机文本,然后显示瞬时视觉反馈(点数分解)。 我还添加了一个复选框,在选中时,应隐藏密码,即用星号替换所有字符,同时保留用户输入的实际文本。 正在使用文档侦听器来跟踪文本字段内的更改。 (每个参赛作品都会被分析,然后进行评分) 所以,我的问题是,我究竟如何用星号掩盖用户输入以保留其原始值? 这是GUI的样子: http://sofzh.miximages.com/java/512f9abb3f92a25add7c593e9d80e9e4.png

如何加密JConsole密码文件的密码

我正在使用JConsole访问我的应用程序MBean,并使用password.properties文件。 但根据Sun的规范,此文件仅包含明文格式的密码。 com.sun.management.jmxremote.password.file=/password.properties 现在我想加密密码并将其用于JConsole的JMX用户身份validation(Remote部分中的用户名和密码字段)。 我可以使用任何预定义的加密逻辑或我自己的加密算法。 有没有人知道任何这样的拦截将明文密码更改为加密密码,以便JMX Framework也知道加密密码? 我当前的密码文件: guest guest admin admin 使用加密它应该看起来像: guest ENC(RjqpRYbAOwbAfAEDBdHJ7Q4l/GO5IoJidZctNT5oG64=) admin ENC(psg3EnDei6fVRuqHeLwOqNTgIWkwQTjI2+u2O7MXXWc=)

存储数据库密码的最佳实践

我正在开发一个将访问数据库的自定义服务器应用程序。 我需要决定将凭据(和地址)存储到该服务器的位置。 常见的解决方案是将凭证放在配置文件中。 但是,我不希望受感染的服务器意味着黑客可以访问数据库(托管在单独的服务器上)。 我可以将凭据存储在环境中,但这只是通过默默无闻的安全性。 Evil先生可以在环境中寻找它。 有人建议加密。 但是,如果我将密钥存储在可执行文件中,快速解编译(我们使用的是Java),我仍然注定失败。 我还想避免每次启动服务器时都输入一个释义。 有什么建议么? 我觉得我错过了一些简单的事情。 谢谢

Java Play加密数据库密码

我正在开发一个Java Play应用程序,我将数据库密码以纯文本forms存储在application.conf文件中。 db.default.url=”jdbc:oracle:thin:@HOST:PORT/SID” db.default.user=USER db.default.pass=PW 现在我想将其存储为加密密码。 在寻找解决方案时,我看到许多关于实现插件的技巧。 以下是我遇到的解决方案。 在application.conf中加密db密码 在那个例子中,使用了play.PlayPlugin但是当我尝试它时,我得到一个包找不到错误。 我是否需要插入外部jar文件,或者是因为版本问题。 我正在使用Java play 1.2 有没有其他方法来存储除插件以外的加密格式的密码。

更新对象属性

我正在使用Struts 2,我的问题是我不想更新所有对象属性,因为我得到了一些敏感数据。 这是我的代码示例 public class person { private name; private email; private password; } 以我的forms为例,我显示了更新的名称和电子邮件,因此当我在提交后更新我的人员属性时,该人的密码属性获取值null,但是当我将属性密码放在标签中时在forms上更新工作正常。 如何让Struts 2记住密码的值而不使用表单中的隐藏标签?

java.sql.SQLException:对用户’root’@’localhost’拒绝访问(使用密码:NO)

我的项目遇到了麻烦,它涉及JDBC和Mysql连接。 当我执行以下操作时: private Statement m_statement = null; // statement private Connection m_connection = null; // connection /** * Constructor #1 of the Database class * @throws ClassNotFoundException */ public Database() throws ClassNotFoundException { try { Class.forName(“com.mysql.jdbc.Driver”); MysqlDataSource ds = new MysqlConnectionPoolDataSource(); ds.setServerName(“localhost”); ds.setPort(3306); ds.setUser(“root”); ds.setPassword(“”); this.m_connection = ds.getConnection(); this.m_statement = this.m_connection.createStatement(); } catch (SQLException s) […]

如何用Java加密/解密文件?

我正在编写一个Java应用程序,它可以“加密”并因此“解密”任何二进制文件。 我只是“加密”领域的初学者,所以我想在开始时编写一个非常简单的应用程序。 为了读取原始文件,我可能会使用java.io.FileInputStream类来获取文件的“字节数组” byte originalBytes[] 。 然后我可能会使用一些非常简单的密码,例如“ 将每个字节向上移动1 ”然后我会得到“加密”字节byte encryptedBytes[]并且假设我也会为它设置“密码”,因为例如“123456789”。 接下来,当有人想要“解密”该文件时,他必须首先输入密码(“123456789”),之后文件可以被解密(因此“ 每个字节向下移动1 ”)并因此保存到输出文件中通过java.io.FileOutputStream 。 我只是想知道如何将密码信息“存储”到加密文件中,以便解密应用程序知道输入的密码和“真实”密码是否等于? 将密码(例如密码字母的ASCII序号)添加到文件的开头(加密数据之前)可能是愚蠢的。 所以我的主要问题是如何将密码信息存储到加密文件中 ?

通过使用reflection在垃圾回收之前擦除内容,安全地使用String作为密码

使用reflection来擦除String是否使用String作为使用char[]进行密码安全? 从安全方面来说,通常认为使用char[]存储/传递密码是最佳做法,因为可以在代码中尽快将其内容清零,这可能在垃圾收集清理它和内存之前显着重用(擦除所有跟踪),限制内存攻击的时间窗口。 但是, char[]并不像String那么方便,所以如果需要的话可以“擦除”一个String ,这样就很方便了,这样就可以使String像char[]一样安全。 下面是一个使用reflection来清除String字段的方法。 这个方法是否“OK”,它是否实现了使String像char[]一样安全的目标? public static void scrub(String str) throws NoSuchFieldException, IllegalAccessException { Field valueField = String.class.getDeclaredField(“value”); Field offsetField = String.class.getDeclaredField(“offset”); Field countField = String.class.getDeclaredField(“count”); Field hashField = String.class.getDeclaredField(“hash”); valueField.setAccessible(true); offsetField.setAccessible(true); countField.setAccessible(true); hashField.setAccessible(true); char[] value = (char[]) valueField.get(str); // overwrite the relevant array contents with null chars Arrays.fill(value, offsetField.getInt(str), countField.getInt(str), ‘\0’); countField.set(str, […]