Ta en titt på Jasypt , det är ett java-bibliotek som låter utvecklaren lägga till grundläggande krypteringsmöjligheter till sina projekt med minimal ansträngning och utan att behöva ha djup kunskap om hur kryptografi fungerar.
Om du använder Spring kan du definiera dina db.properties
som:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/yourdb
jdbc.username=userName
jdbc.password=ENC(A6L729KukPEx7Ps8didIUWb01fdBRh7d)
och konfigurera den med Jasypt och Spring som:
<bean class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg>
<bean class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config">
<bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
</bean>
</property>
</bean>
</constructor-arg>
<property name="locations">
<list>
<value>classpath:/META-INF/props/db/db.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
Detta skulle dölja det faktiska lösenordet (du kan göra samma sak för username
). ) från elever, så att de inte skulle kunna härleda anslutningssträngen från att titta på egenskapsfilen.
Om du inte använder Spring, här är en Jasypt-guide för att uppnå samma "manuellt"