有人做过c#版本的小米“订单支付结果通知接口”么??
请问有没有用c#接过这个接口的朋友呢,麻烦提供以下帮助。。
现在的问题主要是他们提供的算法是java版本的,希望有人给出c#版本的,谢谢!!
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class HmacSHA1Encryption {
private static final String MAC_NAME = "HmacSHA1";
private static final String ENCODING = "UTF-8";
/**
* 使用HMAC-SHA1 签名方法对对encryptText进行签名
* @param encryptText 被签名的字符串
* @param encryptKey 密钥
* @return 返回被加密后的字符串
* @throws Exception
*/
public static String HmacSHA1Encrypt( String encryptText,
String encryptKey ) throws Exception{
byte[] data = encryptKey.getBytes( ENCODING );
// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
SecretKey secretKey = new SecretKeySpec( data, MAC_NAME );
// 生成一个指定Mac 算法的Mac 对象
Mac mac = Mac.getInstance( MAC_NAME );
// 用给定密钥初始化Mac 对象
mac.init( secretKey );
byte[] text = encryptText.getBytes( ENCODING );
// 完成Mac 操作
byte[] digest = mac.doFinal( text );
StringBuilder sBuilder = bytesToHexString( digest );
return sBuilder.toString();
}
/**
* 转换成Hex
**
@param bytesArray
*/
public static StringBuilder bytesToHexString( byte[]
bytesArray ){
if ( bytesArray == null ){
return null;
}S
tringBuilder sBuilder = new StringBuilder();
for ( byte b : bytesArray ){
String hv = String.format("%02x", b);
sBuilder.append( hv );
}r
return sBuilder;
}
/**
* 使用HMAC-SHA1 签名方法对对encryptText进行签名
**
@param encryptData 被签名的字符串
* @param encryptKey 密钥
* @return 返回被加密后的字符串
* @throws Exception
*/
public static String HmacSHA1Encrypt( byte[] encryptData, String
encryptKey ) throws Exception{
byte[] data = encryptKey.getBytes( ENCODING );
// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
SecretKey secretKey = new SecretKeySpec( data, MAC_NAME );
// 生成一个指定Mac 算法的Mac 对象
Mac mac = Mac.getInstance( MAC_NAME );
// 用给定密钥初始化Mac 对象
mac.init( secretKey );
// 完成Mac 操作
byte[] digest = mac.doFinal( encryptData );
StringBuilder sBuilder = bytesToHexString( digest );
return sBuilder.toString();
}
}