精华内容
下载资源
问答
  • java数据库加密(druid)

    千次阅读 2018-11-05 17:43:36
    #本次数据库连接池使用的是druid 1.在pom.xml中下载jar包 <dependency> <groupId>com.alibaba</groupId> <artifactId&amp...

    ##参考博客:https://blog.csdn.net/weily11/article/details/80106846
    #本次数据库连接池使用的是druid
    1.在pom.xml中下载jar包

    <dependency>
    	<groupId>com.alibaba</groupId>
    	<artifactId>druid</artifactId>
    	<version>1.0.25</version>
    </dependency>
    

    2.在数据库连接池中配置(请先去第3步骤生成执行main方法获取密钥)

    <bean id="dataSource" class="第三步,类路径" init-method="init" destroy-method="close">
    	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    	<property name="url" value="jdbc:mysql://192.168.1.73:3306/hbvat-test-inline?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8" />
    	<property name="username" value="root" />
    	<property name="password" value="--执行加密生成的密钥--" />
    	.....//还可以补充
    </bean>
    

    3.解密密码
    注意:ConfigTools是Druid自带的加解密工具,也可以使用自己编写的加解密工具.

    import com.alibaba.druid.filter.config.ConfigTools;
    import com.alibaba.druid.pool.DruidDataSource;
    
    public class SecurityDateSource extends DruidDataSource {
    
        /*@Override
        public void setUsername(String username) {
            try {
                username = ConfigTools.decrypt(username);
            } catch (Exception e) {
                e.printStackTrace();
            }
            super.setUsername(username);
        }*/
    
        @Override
        public void setPassword(String password) {
            try {
                password = ConfigTools.decrypt(password);
            } catch (Exception e) {
                e.printStackTrace();
            }
            super.setPassword(password);
        }
    
        public static void main(String[] args) throws Exception{
            String password = "123456";       
            System.out.println( ConfigTools.encryption(password) + "]");
             //String username = "root";
            //System.out.println("加密后的username = [" + ConfigTools.encryption(username) + "]");
        }
    }
    
    展开全文
  • 代码如下: package com.example.demo.test; import ... ... /** * 数据库密码解密 */ public class DruidPasswordUtil extends DruidPasswordCallback { public static void main(S

    代码如下:

    package com.example.demo.test;
    
    import com.alibaba.druid.filter.config.ConfigTools;
    import com.alibaba.druid.util.DruidPasswordCallback;
    
    /**
     * 数据库密码解密
     */
    public class DruidPasswordUtil extends DruidPasswordCallback {
    
        public static void main(String[] args) throws Exception{
            //密码明文
            String password = "123456";
            //获取公私钥
            String [] keyPair = ConfigTools.genKeyPair(512);
            String privateKey = keyPair[0];
            String publicKey = keyPair[1];
    
            System.out.println("privateKey:"+privateKey);
            System.out.println("publicKey:"+publicKey);
            //用私钥加密后的密文
            password = ConfigTools.encrypt(privateKey, password);
            System.out.println("私钥加密后===:"+password);
            //用公钥加密后的密文
            String decryptPassword=ConfigTools.decrypt(publicKey, password);
            System.out.println("公钥解密后===:"+decryptPassword);
            
    
        }
    
    
    }
    
    

    运行结果:
    在这里插入图片描述

    展开全文
  • JAVA 数据库密码加密(MD5)

    千次阅读 2013-06-20 18:19:20
    文章出处:... import java.security.MessageDigest; 数据库密码加密(MD5)" style="margin:0px; padding:0px; border:0px; list-style:none; max-width:100%">

    文章出处:http://xxiao0359.blog.163.com/blog/static/979413752010109045701/

    import java.security.MessageDigest;




    public class Password {
        
        
    //十六进制下数字到字符的映射数组
        private final static String[] hexDigits = {"0""1""2""3""4",
            
    "5""6""7""8""9""a""b""c""d""e""f"}
    ;
        
        

        
    public static String createPassword(String inputString){
            
    return encodeByMD5(inputString);
        }

        
        

        
    public static boolean authenticatePassword(String password, String inputString) {
            
    if(password.equals(encodeByMD5(inputString))) {
                
    return true;
            }
     else {
                
    return false;
            }

        }

        
        

        
    private static String encodeByMD5(String originString) {
            
    if (originString != null{
                
    try{
                    
    //创建具有指定算法名称的信息摘要
                    MessageDigest md = MessageDigest.getInstance("MD5");
                    
    //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
                    byte[] results = md.digest(originString.getBytes());
                    
    //将得到的字节数组变成字符串返回
                    String resultString = byteArrayToHexString(results);
                    
    return resultString.toUpperCase();
                }
     catch(Exception ex) {
                    ex.printStackTrace();
                }

            }

            
    return null;
        }

        
        

        
    private static String byteArrayToHexString(byte[] b) {
            StringBuffer resultSb 
    = new StringBuffer();
            
    for (int = 0<</span> b.length; i++{
                resultSb.append(byteToHexString(b[i]));
            }

            
    return resultSb.toString();
        }

        
        

        
    private static String byteToHexString(byte b) {
            
    int = b;
            
    if (n <</span> 0)
                
    = 256 + n;
            
    int d1 = / 16;
            
    int d2 = % 16;
            
    return hexDigits[d1] + hexDigits[d2];
        }

        
        
    public static void main(String[] args) {
            String password 
    = Password.createPassword("888888");
            System.out.println(
    "对888888用MD5摘要后的字符串:" + password);
            String inputString 
    = "8888";
            System.out.println(
    "8888与密码匹配?" + 
                    Password.authenticatePassword(password, inputString));
            inputString 
    = "888888";
            System.out.println(
    "888888与密码匹配?" + 
                    Password.authenticatePassword(password, inputString));
        }


    }


    输出结果:
    对123456用MD5摘要后的字符串:E10ADC3949BA59ABBE56E057F20F883E
    1234与密码匹配?false
    123456与密码匹配?true
    展开全文
  • Java加密数据库

    2019-06-07 09:36:00
    数据库信息加密:  对数据库中的账号和密码信息进行加密(选择一种算法)然后替换掉原来的明文数据库配置信息。  2.解密:  在Spring读取使用配置文件时进行解密成明文。 三.编码实现  1.加密类实现:...

    一.背景

      数据库配置以明文方式展示如图,会造成安全隐患,如果有黑客入侵会造成密码泄露,信息窃取和破坏等。

    二.加密步骤

      1.对数据库信息加密:

        对数据库中的账号和密码信息进行加密(选择一种算法)然后替换掉原来的明文数据库配置信息。

       2.解密:

        在Spring读取使用配置文件时进行解密成明文。

    三.编码实现

      1.加密类实现:(采用DES算法)

        1.1DES算法介绍:

          DES是一种对称算法,即加密和解密使用的是相同的算法。

          详细介绍:https://blog.csdn.net/qq_27570955/article/details/52442092

        1.2实现:

          获得加密后的账号密码后替换原先的数据库明文配置。

          DESUtils.Java:

     1 import java.security.Key;
     2 import java.security.SecureRandom;
     3 
     4 import javax.crypto.Cipher;
     5 import javax.crypto.KeyGenerator;
     6 
     7 import sun.misc.BASE64Decoder;
     8 import sun.misc.BASE64Encoder;
     9 
    10 public class DESUtils {
    11 
    12     private static Key key;
    13     // 设置密钥key
    14     private static String KEY_STR = "myKey";
    15     private static String CHARSETNAME = "UTF-8";
    16     private static String ALGORITHM = "DES";
    17 
    18     // 静态代码块
    19     static {
    20         try {
    21             // 生成DES算法对象
    22             KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);
    23             // 运用SHA1安全策略
    24             SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
    25             // 设置上密钥种子
    26             secureRandom.setSeed(KEY_STR.getBytes());
    27             // 初始化基于SHA1的算法对象
    28             generator.init(secureRandom);
    29             // 生成密钥对象
    30             key = generator.generateKey();
    31             generator = null;
    32         } catch (Exception e) {
    33             throw new RuntimeException(e);
    34         }
    35     }
    36 
    37     /**
    38      * 获取加密后的信息
    39      * 
    40      * @param str
    41      * @return
    42      */
    43     public static String getEncryptString(String str) {
    44         // 基于BASE64编码,接收byte[]并转换为String
    45         BASE64Encoder base64encoder = new BASE64Encoder();
    46         try {
    47             // 按UTF-8编码
    48             byte[] bytes = str.getBytes(CHARSETNAME);
    49             // 获取加密对象
    50             Cipher cipher = Cipher.getInstance(ALGORITHM);
    51             // 初始化密码信息
    52             cipher.init(Cipher.ENCRYPT_MODE, key);
    53             // 加密
    54             byte[] doFinal = cipher.doFinal(bytes);
    55             // byte[] to encode好的String并返回
    56             return base64encoder.encode(doFinal);
    57         } catch (Exception e) {
    58             // TODO: handle exception
    59             throw new RuntimeException(e);
    60         }
    61     }
    62 
    63     /**
    64      * 获取解密后的信息
    65      * 
    66      * @param str
    67      * @return
    68      */
    69     public static String getDecryptString(String str) {
    70         //基于BASE64编码,接收byte[]并转换为String
    71         BASE64Decoder base64decoder = new BASE64Decoder();
    72         try {
    73             //将字符串decode为byte[]
    74             byte[] bytes = base64decoder.decodeBuffer(str);
    75             //获取解密对象
    76             Cipher cipher = Cipher.getInstance(ALGORITHM);
    77             //初始化解密信息
    78             cipher.init(Cipher.DECRYPT_MODE, key);
    79             //解密
    80             byte[] doFinal = cipher.doFinal(bytes);
    81             //返回解密之后的信息
    82             return new String(doFinal, CHARSETNAME);
    83         } catch (Exception e) {
    84             // TODO: handle exception
    85             throw new RuntimeException(e);
    86         }
    87     }
    88 
    89     public static void main(String[] args) {
    90         System.out.println(getEncryptString("root"));
    91         System.out.println(getEncryptString("123654"));
    92         
    93     }
    94 
    95 }
    View Code

       2.配置文件解析类:

         EncryptPropertyPlaceholderConfigurer.java:

     1 import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
     2 
     3 public class EncryptPropertyPlaceholderConfigurer extends
     4         PropertyPlaceholderConfigurer {
     5     //需要加密的字段数组
     6     private String[] encryptPropNames = { "jdbc.username", "jdbc.password" };
     7     /**
     8      * 对关键的属性进行转换
     9      */
    10     @Override
    11     protected String convertProperty(String propertyName, String propertyValue) {
    12         if (isEncryptProp(propertyName)) {
    13             //对已加密的字段进行阶段工作
    14             String decryptValue = DESUtils.getDecryptString(propertyValue);
    15             return decryptValue;
    16         } else {
    17             return propertyValue;
    18         }
    19     }
    20     /**
    21      * 该属性是否已经加密
    22      * @param propertyName
    23      * @return
    24      */
    25     private boolean isEncryptProp(String propertyName) {
    26         //若等于需要加密的field,则进行加密
    27         for (String encryptpropertyName : encryptPropNames) {
    28             if (encryptpropertyName.equals(propertyName))
    29                 return true;
    30         }
    31         return false;
    32     }
    33 }
    View Code

         未修改前默认使用:

    <context:property-placeholder location="classpath:jdbc.properties" />

     

        配置为自己写的:通过文件解析类将密文解析为明文赋值给对应字段。

        <bean class="com.swpu.o2o.util.EncryptPropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <!-- 需要解密的文件 -->
                    <value>classpath:jdbc.properties</value>
                </list>
            </property>
            <!-- 设置编码为UTF-8 -->
            <property name="fileEncoding" value="UTF-8"></property>
        </bean>

    转载于:https://www.cnblogs.com/lyq-biu/p/10987644.html

    展开全文
  • MySQl数据库配合java加密处理

    千次阅读 2019-07-19 09:49:07
    在看mysql的函数,看到加密算法。...然后java怎么验证呢,总不可能是用户输入,MySQL数据库读取加密之后用条件判断去验证吧,感觉是可以做的; 于是想找找java-md5加密。之后字符串类型比较。还好找...
  • java加密数据库字段

    2007-03-07 17:05:00
    java加密数据库字段
  • 数据库加密

    千次阅读 2018-08-03 17:09:13
     * @see org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#processProperties(org.springframework.beans.factory.config.ConfigurableListableBeanFactory, java.util.Properties) ...
  • spring boot 配置数据库加密

    千次阅读 2017-10-18 13:24:09
    spring boot 配置数据库加密
  • 首先数据库加密有两种方式: 1.对数据库内容进行加密,比如利用md5等进行加密,但是这样相对来说不是很方便。 2.直接对数据库文件进行加密,有收费也有免费的,下面主要是采用SQLCipher进行数据库文件加密。 如何...
  • 数据库为MySQL,项目直接可用,把原文件的字节取出来进行异或运算加密,再把加密后的乱码字节保存到数据库中,对任意一种文件都有效,密钥为一段字符串,可自定义,加密与解密的密钥保持一致即可。
  • Java连接加密后的Access数据库

    千次阅读 2008-05-08 14:41:00
    本文中的Access数据库加密,是采用独占方式对.mdb文件进行加密。加密后的数据库,需要用户输入密码才能正确打开和查看。 采用ODBC方式(无须配置数据源)连接Access数据库,相关的主要代码:String url = "jdbc:...
  • 数据库加密字段的模糊搜索This post was originally published on the ParagonIE blog and reposted here with their permission. 该帖子最初发布在ParagonIE博客上,并在获得其许可的情况下在此处重新发布。 ...
  • greendao数据库加密

    2018-05-24 15:29:15
    添加依赖 // This is only needed if you want to use... compile 'net.zetetic:android-database-sqlcipher:3.5.6'连接加密数据库 mHelper = new MySQLiteOpenHelper(this, "test2-db", null); // db = ...
  • 首先配置文件中 <!-- 加密时候使用 --> <bean id="propertyConfig" class="sunwin.yog.dao.DecodePropertyConfigurer"> <property name="locations"> <list> &l...
  • 二、实现思路我们都知道项目启动时,Spring 容器会加载配置文件并读取文件中的内容,那么我们可以下边步骤操作:1) 通过 DES 算法加密连接数据库的账号和密码并将加密后的密文写到 db 配置文件中。2) 在 Spring 读取...
  • Realm数据库使用教程(六):数据迁移数据库加密Realm自带数据库加密,需要64位字节数据进行加密。 官方原文Realm 文件可以通过传递一个512位(64字节)的密钥参数给 Realm.getInstance().encryptionKey() 来加密...
  • 报异常file is encrypted or is not a database
  • Java数据库相同的md5加密算法

    千次阅读 2017-07-25 18:55:56
    java进行与数据库相同的md5加密算法
  • Android 数据库加密

    千次阅读 2014-11-16 22:29:18
     SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的读写效率、资源消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案(如Android、iOS)。Android系统内置了SQLite数据库,...
  • Sqlite数据库加密方法

    万次阅读 2019-07-04 07:50:11
    数据库中插入的字段内容先进行AES、MD5等加密后在插入到数据库中,在使用时先从数据库中取出数据,然后在解密在使用这种方式好是好,但是有些致命的问题不能绕过,如果要对某个字段进行模糊查询操作,那么该字段就...
  • 德鲁伊druid数据库加密

    千次阅读 2018-10-22 10:56:53
    执行语句:java -cp druid-1.1.8.jar com.alibaba.druid.filter.config.ConfigTools qwer1234 注意jar包名称不要写错了,你的是哪个版本的就写 druid-xxx.jar。 4、数据源配置中,密码写加密后得到...
  • oracle数据库加密

    千次阅读 2013-08-13 11:08:34
    安全就好比在寒冷的冬天里,您穿上好几件衣服或穿最庞大的冬天使用的夹克御寒。但是,构建各防御层可能阻止不了最坚决的恶意入侵者,当然这也不会总能够防御合法用户盗窃...对于网络,加密是确保全局安全地主要因素:而
  • java源码:修改表头加密数据库.rar
  • Java MD5加密数据库连接池密码
  • java web 项目数据库连接加密方式
  • springboot对数据库密码加密

    万次阅读 多人点赞 2018-08-31 16:39:17
    开发的同学们都知道,例如项目依赖的信息,数据库信息一般是保存在配置文件中,而且都是明文,因此需要进行加密处理,今天在这里介绍下jasypt集成springboot加密的配置。 首先,这些都是建立在你的springboot项目是...
  • 本文搭建一个简单WEB工程,使用AES算法生成密钥,使用AES/CBC/PKCS5Padding算法对数据密码加密与解密,并完成从数据库中获取数据。 一、工程整体结构 二、工程搭建 1.jar包引入 <parent> <groupId>...
  • 1> 下载 SQLCipher+for+Android+v2.2.2.zip 2> 解压后的目录如下,将对应的文件拷...3> 创建数据库操作方法 MyDatabaseHelper.java 具体代码如下: import android.content.Context; import net.sqlcipher.data

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,794
精华内容 45,917
关键字:

java数据库加密

java 订阅