java认证
SIPC的认证算法java如何实现?
关注:40952  答案:1  悬赏:0
离问题结束还有
  • 待解决
  • 2017-09-30 08:38
最佳答案
暂无最佳答案    我来回答
全部回答
  • 1楼
  • 2017-09-30 08:43
SIPC的认证算法,支持SHA1和MD5。 import java.io.UnsupportedEncodingException; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Random; public class GenAuthResponse { // Fields private String cnonce; private String domain; private String nonce; private String password; private static Random random; private String sid; private boolean usingSHA1=false; private String salt; private String encryptPassword; public void setSalt(String salt) { this.salt = salt; } public String getEncryptPassword() { return encryptPassword; } public void setEncryptPassword(String encryptPassword) { this.encryptPassword = encryptPassword; } public String getSalt() { return salt; } // public void setSalt(String salt) { // this.salt = salt; // } public boolean isUsingSHA1() { return usingSHA1; } public void setUsingSHA1(boolean usingSHA1) { this.usingSHA1 = usingSHA1; } public String getCnonce() { return this.cnonce; } public void setCnonce(String cnonce) { this.cnonce = cnonce; } public String getDomain() { return domain; } public void setDomain(String domain) { this.domain = domain; } public String getNonce() { return nonce; } public void setNonce(String nonce) { this.nonce = nonce; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } // Methods public GenAuthResponse(String sid, String password, String domain, String nonce) { this.sid = sid; this.password = password; this.domain = domain; this.nonce = nonce; Calendar cal = new GregorianCalendar(); int seed = cal.get(Calendar.DAY_OF_YEAR) * 0xf4240; seed += cal.get(Calendar.HOUR) * 0x2710; seed += cal.get(Calendar.MINUTE) * 100; seed += cal.get(Calendar.SECOND); // random = new Random(System.currentTimeMillis()); random = new Random(seed); this.cnonce = GenCNonce(); this.salt=GenSalt(); // System.out.println(salt); } private static String BinToHex(byte[] binary) { // StringBuilder builder = new StringBuilder(); // for(byte num : binary) // { // int n = num; // if (n 15) // { // builder.append(String.format("%X",n)); // // } // else // { // builder.append(String.format("0%X",n)); // // } // } //// System.out.println(builder.toString()); // return builder.toString(); if (binary == null) return "null"; if (binary.length == 0) return ""; StringBuilder buf = new StringBuilder(); for (int i = 0; i < binary.length; i++) { if (binary[i] < 0) buf.append(Integer.toHexString(binary[i]&0xff)); else if (binary[i] < 16) { buf.append('0'); buf.append(Integer.toHexString(binary[i])); } else { buf.append(Integer.toHexString(binary[i])); } } return buf.toString().toUpperCase(); }