现在我正在使用j安全检查和md5来验证我的jsp页面。在将密码存储到数据库之前,我想将密码加密。由于学校限制访问,我没有权利创造一个注入盐的触发器。还有其他办法吗?
这是我的领域:
<Realm
className="org.apache.catalina.realm.JDBCRealm"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://someurl"
connectionName="name"
connectionPassword="password"
userTable="name.users"
userNameCol="user_name"
userCredCol="user_password"
userRoleTable="name.users"
roleNameCol="role"
digest="MD5"
/>
答案 0 :(得分:1)
很快说:“不,你不能。至少,不是简单”
实际上,摘要由public static final Digest(String credentials, String algorithm,String encoding)
类org.apache.catalina.realm.RealmBase
类中的JDBCRealm
方法处理,Digest
类继承该类。这个{{1}}方法直接调用MessageDigest实例,我认为它只能用于“MD5”,“SHA-1”和“MD2”。因此,在应用MD5 algortihm之前或之后,您无法对密码执行任何操作
但是,你可以implement a provider拥有你想要的算法。但我警告你,这并不是那么简单。
顺便说一句,我个人更喜欢使用SHA-1哈希密码而不是MD5密码,即使它已被腌制了: - )
答案 1 :(得分:1)
我认为唯一的方法是自己实现少量函数(覆盖JDBCRealm的方法),例如authenticate
。