存档在 2015年8月

referenceScreen 偏好显示类

2015年8月16日

PreferenceScreen preference是偏好,首选的意思,PreferenceScreen个人翻译成 “偏好显示”,明白这个意思就好,就是说根据特点灵活的定义显示内容风格,一个屏幕可以包含多个风格,像系统自带的声音设置界面。 b362b5c7-f426-3ba9-b4a4-9acf491f7a87 » 阅读更多: referenceScreen 偏好显示类

brew安装软件所在目录

2015年8月15日

/usr/local/Cellar

URI之链接地址测试

2015年8月11日
 Uri uri = Uri.parse("http://127.0.0.1:8080/api/topics/nodeId/2-1-10");
        List<String> list = uri.getPathSegments();
        System.out.print("[1]");
        for(int i=0;i<list.size();i++)
            System.out.print(list.get(i));
        System.out.println();

        System.out.print("[2]");
        String path = uri.getEncodedPath();
        System.out.println(path);

        System.out.print("[3]");
        path = uri.getLastPathSegment();
        System.out.println(path);

        System.out.print("[4]");
        path = uri.getAuthority();
        System.out.println(path);

        System.out.print("[5]");
        path = uri.getHost();
        System.out.println(path);

        System.out.print("[6]");
        path = uri.getScheme();
        System.out.println(path);

        System.out.print("[7]");
        path = uri.getPath();
        System.out.println(path);

» 阅读更多: URI之链接地址测试

避免Gson自动Unicode转义

2015年8月11日

服务器端待发送的字符串为:”我是中国人==ABCD==我是四川人” 。
Json化的代码为:

	Gson  gson = new GsonBuilder().setPrettyPrinting().create();
	    String json = gson.toJson(topics);
	    renderText(json);

浏览器中接收到的字符串为:
“我是中国人\u003d\u003dABCD\u003d\u003d我是四川人”。
可以看出一些特殊字符被unicode转义了。

可以采用如下增加disableHtmlEscaping方式避免转义:

		Gson  gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
	    String json = gson.toJson(topics);
	    renderText(json);

JAVA UUID生成

2015年8月11日

UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID,GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。

package com.mytest;
import java.util.UUID;
public class UTest {
    public static void main(String[] args) {
        UUID uuid = UUID.randomUUID();
        System.out.println(uuid);
    }
}

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。
» 阅读更多: JAVA UUID生成

Java加密算法-HMAC

2015年8月11日

如基本的单向加密算法:

  • BASE64 严格地说,属于编码格式,而非加密算法
  • MD5(Message Digest algorithm 5,信息摘要算法)
  • SHA(Secure Hash Algorithm,安全散列算法)
  • HMAC(Hash Message Authentication Code,散列消息鉴别码)

复杂的对称加密(DES、PBE)、非对称加密算法:

  • DES(Data Encryption Standard,数据加密算法)
  • PBE(Password-based encryption,基于密码验证)
  • RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
  • DH(Diffie-Hellman算法,密钥一致协议)
  • DSA(Digital Signature Algorithm,数字签名)
  • ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)

 
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个 标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证 等。

/**
     * 初始化HMAC密钥
     * 
     * @return
     * @throws Exception
     */
    public static String initMacKey() throws Exception {
        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
 
        SecretKey secretKey = keyGenerator.generateKey();
        return encryptBASE64(secretKey.getEncoded());
    }
 
    /**
     * HMAC加密
     * 
     * @param data
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
 
        SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());
        mac.init(secretKey);
 
        return mac.doFinal(data);
 
    }

Java加密算法-SHA

2015年8月11日

如基本的单向加密算法:

  • BASE64 严格地说,属于编码格式,而非加密算法
  • MD5(Message Digest algorithm 5,信息摘要算法)
  • SHA(Secure Hash Algorithm,安全散列算法)
  • HMAC(Hash Message Authentication Code,散列消息鉴别码)

复杂的对称加密(DES、PBE)、非对称加密算法:

  • DES(Data Encryption Standard,数据加密算法)
  • PBE(Password-based encryption,基于密码验证)
  • RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
  • DH(Diffie-Hellman算法,密钥一致协议)
  • DSA(Digital Signature Algorithm,数字签名)
  • ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)

 

SHA(Secure Hash Algorithm,安全散列算法),数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。
20140412114510_468

/**
     * SHA加密
     * 
     * @param data
     * @return
     * @throws Exception
     */
    public static byte[] encryptSHA(byte[] data) throws Exception {
 
        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
        sha.update(data);
 
        return sha.digest();
 
    }
}

Java加密算法-MD5

2015年8月11日

如基本的单向加密算法:

  • BASE64 严格地说,属于编码格式,而非加密算法
  • MD5(Message Digest algorithm 5,信息摘要算法)
  • SHA(Secure Hash Algorithm,安全散列算法)
  • HMAC(Hash Message Authentication Code,散列消息鉴别码)

复杂的对称加密(DES、PBE)、非对称加密算法:

  • DES(Data Encryption Standard,数据加密算法)
  • PBE(Password-based encryption,基于密码验证)
  • RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
  • DH(Diffie-Hellman算法,密钥一致协议)
  • DSA(Digital Signature Algorithm,数字签名)
  • ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)

 

MD5 — message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都 是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文 件是否一致的。
20140412114509_299

/**
     * MD5加密
     * 
     * @param data
     * @return
     * @throws Exception
     */
    public static byte[] encryptMD5(byte[] data) throws Exception {
 
        MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
        md5.update(data);
 
        return md5.digest();
 
    }