マイクロチャネルのチェックポイント・インタフェース

コントローラ:
/ **
*校验
* @paramリクエスト
* @param応答
*例外@throws
* /
@RequestMapping(値= "wx_check"、メソッド= {RequestMethod.GET})
公共ボイドwxCheck(HttpServletRequestのリクエスト、HttpServletResponseの応答)をスロー例外{
文字列の署名= request.getParameter(「署名」)。
文字列タイムスタンプ= request.getParameter(「タイムスタンプ」)。
文字列ナンス= request.getParameter(「ナンス」)。
ストリングechostr = request.getParameter( "echostr")。

System.out.print(echostr)。
PrintWriterアウト= response.getWriter()。
IF(WeiXinCheck.weiXinCheckSignature(署名、タイムスタンプ、ノンス)){
out.print(echostr)。
}
}
WeiXinCheck:
プライベート静的最終列トークン=「管理者」。
/ **
*签名校验
* @param署名
* @paramタイムスタンプ
* @paramノンス
* @return
* /
パブリック静的ブールweiXinCheckSignature(文字列の署名文字列タイムスタンプ、文字列のノンス){
String []型ARR =新しいString [] {トークン、タイムスタンプ、ノンス}。
//排序
は、Arrays.sort(ARR)。

//生成字符串
StringBufferの内容=新しいStringBufferを();
{ため(iは++; iは<arr.length I = 0 INT)
content.appendを(ARR [I])。
}

// SHA1加密
ストリングTEMP = getSha1(content.toString())。
戻りtemp.equals(署名)。
}
/ **
* SHA1加密
* @param STR
* @return
* /
パブリック静的な文字列getSha1(文字列str){
IF(ヌル== STR || str.length()== 0){
戻りヌル。
}
のchar [] hexDigits = { '0'、 '1'、 '2'、 '3'、 '4'、 '5'、 '6'、 '7'、 '8'、 '9'、
'' 、 'B'、 'C'、 'D'、 'E'、 'F'}。
{試みる
するMessageDigest mdTemp = MessageDigest.getInstance( "SHA1")。
mdTemp.update(str.getBytes( "UTF-8"));

バイト[] MD = mdTemp.digest(http://www.amjmh.com/v/BIBRGZ_558768/)。
int型J = md.length。
[] bufが=新しいのchar [J * 2] char型。
INTのK = 0。
以下のために(INT i = 0; iはJ <; iは++){
バイトBYTE0 = MD [I];
BUF [K ++] = hexDigits [0xFの&4 >>> BYTE0]。
BUF [K ++] = hexDigits [BYTE0&0xFの]。
}
新しいString(BUF)を返します。
}キャッチ(例外e){
e.printStackTrace();
ヌルを返します。
}
}
----------------

 

おすすめ

転載: www.cnblogs.com/ly570/p/11414326.html