当前位置: 首页 > news >正文

岗顶网站开发创建一个平台需要什么

岗顶网站开发,创建一个平台需要什么,为什么要网站建设,工程管理咨询公司项目场景 Apache James邮件服务器使用数据库来存储用户信息的密码加密问题#xff1a; 将James的用户改为数据库存储James密码是如何加密验证的 1.将James的用户改为数据库存储 1、修改存储方式 找到james-2.3.2\apps\james\SAR-INF\config.xml 找到users-store标…项目场景 Apache James邮件服务器使用数据库来存储用户信息的密码加密问题 将James的用户改为数据库存储James密码是如何加密验证的 1.将James的用户改为数据库存储 1、修改存储方式 找到james-2.3.2\apps\james\SAR-INF\config.xml 找到users-store标签注释掉原来文件存储的方式改为数据库的方式 maildb是后面配置的数据源名称 mail_users是存储用户信息的表名 users-store!-- 注释掉原来文件存储的方式 --!--repository nameLocalUsers classorg.apache.james.userrepository.UsersFileRepositorydestination URLfile://var/users///repository--!-- 改为数据库的方式 --repository nameLocalUsers classorg.apache.james.userrepository.JamesUsersJdbcRepository destinationURLdb://maildb/mail_userssqlFilefile://conf/sqlResources.xml/sqlFile/repository/users-store 2.、配置数据库信息 找到data-source标签根据具体数据库类型进行配置下面已国产达梦数据库为例 maildb数据源名称  data-source namemaildb classorg.apache.james.util.dbcp.JdbcDataSourcedriverdm.jdbc.driver.DmDriver/driverdburljdbc:dm://127.0.0.1:5236/test_mail/dburlusertest/userpasswordtest123/passwordmax50/max /data-source 3、添加依赖包 因为我用的是达梦数据库james里面没有这个数据库的依赖包所以需要额外添加如果是mysql、oracle常用的数据库就不需要再额外添加因为james已经支持。 找到james-2.3.2\lib然后把需要的依赖包放进去 4、创建用户表 正常情况下会自动创建sql语句在james-2.3.2\apps\james\conf\sqlResources.xml 如果不会自动创建那么自己把sql语句复制出来执行 CREATE TABLE MAIL_USERS (USERNAME VARCHAR2(64) NOT NULL,PWDHASH VARCHAR2(50),PWDALGORITHM VARCHAR2(20),USEFORWARDING NUMBER(1,0),FORWARDDESTINATION VARCHAR2(255),USEALIAS NUMBER(1,0),ALIAS VARCHAR2(255),PRIMARY KEY(USERNAME) );COMMENT ON TABLE MAIL_USERS IS James邮件用户; COMMENT ON COLUMN MAIL_USERS.PWDALGORITHM IS 加密方式默认SHA; COMMENT ON COLUMN MAIL_USERS.PWDHASH IS 加密后的密码; COMMENT ON COLUMN MAIL_USERS.USERNAME IS 邮箱帐号; 2.James密码是如何加密验证的 当你通过telnet添加新用户时比如add user test 123456你可以查看数据库中的记录username字段是testpwdhash是加密后的密码pwdalgorithm字段是“SHA”显然用的是SHA加密方式。 让我们看下james源码是如何实现的网上找到apache-james-2.3.2-src.zip源码文件版本根据自己的来然后用idea打开。 我们找到org.apache.james.userrepository.DefaultUser类 第一个方法verifyPassword()是用来做密码认证传入的参数是明文密码通过DigestUtil.digestString()方法转换成密文密码然后与数据库中密码作比较返回比较结果。请注意这里的DigestUtil.digestString()方法在后面还在提到。 第二个方法setPassword()是用于密码转换的把明文转成密文用的同样是DigestUtil.digestString()方法。 让我们再看下 org.apache.james.security.DigestUtil类我们可以看到digestString加密的方法。 如果需要在自己的项目里去添加或修改用户的信息这时候密码处理的逻辑肯定需要跟james一致这时候我们把这个加密的方法拷贝用就行了 。 创建个DigestUtil类然后调用DigestUtil.digestString()来获得加密后的密码。 package com.mail;import javax.mail.MessagingException; import javax.mail.internet.MimeUtility;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class DigestUtil {public static String digestString(String pass, String algorithm )throws NoSuchAlgorithmException {MessageDigest md;ByteArrayOutputStream bos;try {md MessageDigest.getInstance(algorithm);byte[] digest md.digest(pass.getBytes(iso-8859-1));bos new ByteArrayOutputStream();OutputStream encodedStream MimeUtility.encode(bos, base64);encodedStream.write(digest);return bos.toString(iso-8859-1);} catch (IOException ioe) {throw new RuntimeException(Fatal error: ioe);} catch (MessagingException me) {throw new RuntimeException(Fatal error: me);}}private DigestUtil() {} }加密支持的算法有MD5、SHA、SHA-256等 如果你想知道支持哪些算法可以通过下面的代码列出所有支持的算法 import java.security.Security; import java.security.Provider; import java.security.Provider.Service;public class ListAlgorithms {public static void main(String[] args) {for(Provider provider: Security.getProviders()) {for(Service service: provider.getServices()) {if (MessageDigest.equals(service.getType())) {System.out.println(service.getAlgorithm());}}}} } 3.总结 集成java mail直接用明文帐号密码连接就行了因为james会自己去加密验证其他软件通过pop3配置密码也是用明文就行了。         如果觉得这种连接方式不安全有两种解决方案 修改james源码比较麻烦。密码在web端加密传输到自己后台再解密然后用解密后的密码连接james。 import javax.mail.*; import javax.mail.internet.*; import java.util.*;public class SendEmail {public static void main(String[] args) {String host smtp.example.com; // SMTP服务器地址String username your-username; // 用户名String password your-password; // 密码Properties props new Properties();props.put(mail.smtp.host, host);props.put(mail.smtp.auth, true);Session session Session.getInstance(props, new Authenticator() {Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);}});try {Message message new MimeMessage(session);message.setFrom(new InternetAddress(fromexample.com));message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toexample.com));message.setSubject(Email Subject);message.setText(Email Body);Transport.send(message);System.out.println(Email sent successfully);} catch (MessagingException e) {throw new RuntimeException(Error sending email, e);}} }
http://www.hkea.cn/news/14409649/

相关文章:

  • 白酒企业网站建设地推接单大厅app
  • 设计教学网站推荐无锡网络公司
  • 网站建设沈阳凯鸿誉铭摄影网站
  • 网上购物网站大全怎样提升网站关键词
  • 柯城网站建设网页设计素材资讯
  • 设计师每天都上的网站不用vip会员也能观看的软件
  • 京东商城网站风格创意模板
  • 百度网站排名关键词整站优化引航博景网站做的好吗
  • 网站代码检查页面做的好看的网站
  • 帮别人设计网站的网站吗成都大型广告公司有哪些
  • 做个企业网网站怎么做网站seo监测
  • 双语网站系统影视网站cpa 如何做
  • 重庆网站空间键词排名企业资质查询
  • 深圳网站 商城制作网站正能量视频不懂我意思吧
  • 网站几个数据库简单的html网页制作
  • 微云做网站广州模板建站系统
  • 河南省住房和城乡建设网站分类信息网站建设系统
  • 自主建站网站app下载软件免费下载
  • 淘宝网站建设类别报价表
  • 南宁中小企业网站制作自建网站如何盈利
  • 常州建设工程监理员挂证网站做服务网站要多少钱
  • 网站怎么做二级页面莆田有哪些网站建设公司
  • 厦门网站建设技术支持菜鸟式网站建设图书
  • 欧洲网站设计网站建设与运营课程
  • 物流网站做代理我想自己建立一个网站
  • 国内大型php网站建设母版页做网站例子
  • 洋气的设计公司名字浙江网站建设方案优化
  • 网站建设需求登记表 免费下载建网站流程 知乎
  • 考研门户网站的建设网络运维基础知识
  • 四川建设网网站首页营销型网站开发公司