java加密与解密(一)
jdk安全强度设置:
http://java.sun.com/javase/downloads/index.jsp中的Other Downloads下载
解压zip,
用其中的两个jar包覆盖jdk6下\%JDK_HOME%\jre\lib\security目录下的jar包
jre目录下也作相同配置
然后通过代码段
try {
KeyGenerator kg = KeyGenerator.getInstance("AES");
kg.init(256);
SecretKey secretKey = kg.generateKey();
byte[] key = secretKey.getEncoded();
System.out.println("ok");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
对调整后的系统权限进行验证,执行顺利,表示生效,如果不进行调整,由于出口限制,密钥不支持256位.
MD4,IDEA等加密算法,java6不支持,可以通过在JRE环境中配置开源组件包Bounce Castle,加入对应的
提供者,获得相应的算法支持.
从http://www.bouncycastle.org/latest_releases.html
下载 bcprov-jdk16-145.jar ,bcprov-ext-jdk16-145.jar
扩充算法支持的两种方式
1配置方式:
修改配置文件,\%JDK_HOME%\jre\lib\security\java.security中加入
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
然后把bcprov-ext-jdk16-145.jar放入\%JDK_HOME%\jre\lib\ext目录下
jre目录下也作相同配置
2调用方式:
把bcprov-jdk16-145.jar导入工程,接着在程序中要导入两个类
java.security.Security
org.bouncycastle.jce.provider.BouncyCastleProvider
接着在初始化工厂,密钥生成器等引擎类时,采用如下方式
Security.addProvider(new BouncyCastleProvider())
或者在初始化工厂,密钥生成器等引擎类时,采用如下方式
MessageDigest md = MessageDigest.getInstance("MD4","BC");
相关文档:
php和java通用sql语句法
SELECT max(id) from table
该方法在多线程等情况下可能会造成不正确。
java三种方法
1、根据ps的getGeneratedKeys
PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); //红色是关键
ps.executeUpdate(); //执行后
ResultSet rs = ps.getGeneratedKeys ......
脚本变量是使用 var 或 def 关键字声明的。
二者之间的区别在于:在脚本的整个生命周期内都可以为 var 变量赋予新值,
而 def 变量在被首次赋予新值后将保持不变;
def numOne = 100;
def numTwo = 2;
var result;
add();
subtract();
multiply();
divide();
function add() {
result = numOne + numTwo; ......
Graphics2D arg;
float thick=3.0f;
arg1.setStroke(new BasicStroke(thick, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND));
arg1.drawLine(first.x, first.y, next.x, next.y);
arg1.setColor(Color.red);
......
优先级
运算符
名称
1
( )
括号
2
[ ] , 。
后缀运算符
3
- (一元运算符,取负数) , ! , ~ , ++ , --
一元运算符
4
* , / , %
乘,除,取模
5
+, -
加,减
6
>> , << , >>>
移位运算符
7
> , < , >= , <= , instanceof
关系运算符
8
==,!=
等于,不等于
9
......