android和.net webservice中的DES加密算法
也是看了一堆的例子,本身并不会写加密算法,好在只要会用就行了,我们把在app中使用的参数加密,然后在.net端的webservice中进行解密,本身并没有什么问题,但是android下和.net下的des加密算法有些不同,写下供以后使用.
android端的DES.
public class DES {
private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
//加密.
public static String encryptDES(String encryptString, String encryptKey)
throws Exception {
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(encryptKey.getBytes("UTF-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(encryptKey.getBytes("UTF-8"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
return toHexString(cipher.doFinal(encryptString.getBytes("UTF-8"))); } //解密.
public static String decryptDES(String decryptString, String decryptKey)
throws Exception {
byte[] bytesrc =convertHexString(decryptString);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(decryptKey.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(decryptKey.getBytes("UTF-8")); cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte);
} public static String myKey(){ //这个可以不要,我是为了方便,获得加密解密的key
return "12345678";
} public static String toHexString(byte b[]) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String plainText = Integer.toHexString(0xff & b[i]);
if (plainText.length() < 2)
plainText = "0" + plainText;
hexString.append(plainText);
} return hexString.toString();
} public static byte[] convertHexString(String ss)
{
byte digest[] = new byte[ss.length() / 2];
for(int i = 0; i < digest.length; i++)
{
String byteString = ss.substring(2 * i, 2 * i + 2);
int byteValue = Integer.parseInt(byteString, 16);
digest[i] = (byte)byteValue;
} return digest;
}
}
.net端的.
Private sKey As String = "12345678"
'====================说明=========================
'开始于2017-6-15,用于测试android studio调用webservice的例子,用完可以删除....
'=================================================
<WebMethod()> _
Public Function HelloWorld() As String
Return "测试成功,用于返回一个有用的结果值!"
End Function ''' <summary>
''' DES加密算法
''' </summary>
''' <param name="pToEncrypt"></param>
''' <param name="sKey"></param>
''' <returns></returns>
''' <remarks></remarks> Public Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String
Dim des As New DESCryptoServiceProvider()
Dim inputByteArray() As Byte = Encoding.UTF8.GetBytes(pToEncrypt) des.Key = UTF8Encoding.UTF8.GetBytes(sKey)
des.IV = UTF8Encoding.UTF8.GetBytes(sKey)
Dim ms As New MemoryStream()
Dim cs As New CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write) cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock() Dim ret As New StringBuilder()
For Each b As Byte In ms.ToArray()
ret.AppendFormat("{0:X2}", b)
Next b
ret.ToString()
Return ret.ToString()
End Function ''' <summary>
''' DES解密算法.
''' </summary>
''' <param name="pToDecrypt"></param>
''' <param name="sKey"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Decrypt(ByVal pToDecrypt As String, ByVal sKey As String) As String
Dim des As New DESCryptoServiceProvider() Dim inputByteArray((pToDecrypt.Length \ 2) - 1) As Byte
For x As Integer = 0 To (pToDecrypt.Length \ 2) - 1
Dim i As Integer = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16))
inputByteArray(x) = CByte(i)
Next x des.Key = UTF8Encoding.UTF8.GetBytes(sKey)
des.IV = UTF8Encoding.UTF8.GetBytes(sKey)
Dim ms As New MemoryStream()
Dim cs As New CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write)
cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock()
Dim ret As New StringBuilder()
Return Encoding.UTF8.GetString(ms.ToArray())
End Function
经过使用,发现没有任何问题,可以相互加解密.
android和.net webservice中的DES加密算法的更多相关文章
- 在Android中使用Android Ksoap2调用WebService
一.WebService介绍 WebService是基于SOAP协议可实现web服务器与web服务器之间的通信,因采用SOAP协议传送XML数据具有平台无关性,也是成为解决异构平台之间通信的重要解决方 ...
- .net中DES加密算法研究
/// <summary> /// DES加密算法 /// </summary> /// <param name="toEncrypt">要加密 ...
- Android应用安全开发之浅谈加密算法的坑
<Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题 Android开发中,难免会遇到需要加解密一些数据内 ...
- 浅谈DES加密算法
一.DES加密算法介绍 1.要求密钥必须是8个字节,即64bit长度 2.因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3.加密.解密都需要通过字节 ...
- .NET中的DES对称加密
DES是一种对称加密(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法.一般密码长度为8个字节,其中56位加密密钥, ...
- 使用java库中的对称加密算法
对称加密算法是说加密方和解密方使用相同的密钥.常见的对称加密算法包括4个,DES,DESede(3DES),AES,PBE. 本文讨论的内容是加密算法,不是Message Digest,不是编码.下面 ...
- JAVA使用DES加密算法加密解密
程序中使用了.properties文件作为参数配置文档,好处是灵活配置各项参数 一旦对数据库的一些参数进行了配置,势必涉及数据库的IP,端口,用户名和密码 properties文件全是unicode编 ...
- 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密
在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...
- 对称密码——DES加密算法
前言 本篇博文将介绍对称密码算法中的DES密码的算法原理与代码实现(Java) DES算法原理 DES加密算法是对称加密算法(加密和解密使用同一个密钥)中的一种,DES也是分组密码,以64位为分组对明 ...
随机推荐
- FTP,FTPS,FTPS与防火墙
昨天搭建了一台FTPS服务器,过程中学习了很多不清楚的知识点,还有遇到的问题,记录一下. (大部分内容汇集.整理自网络) 一. 关于FTP传输模式 众所周知,FTP传输有两种工作模式,Active M ...
- 第15届浙江省赛 E LIS
LIS Time Limit: 1 Second Memory Limit: 65536 KB Special Judge DreamGrid is learning the LI ...
- UseSubmitBehavior="false" 防止页面重复提交bug
OnClientClick="this.disabled=true;" UseSubmitBehavior="false" 注: 1.当设置UseSubmitB ...
- 什么是语义化的HTML
语义化的HTML使用每个html标签都特定的用途,例如p标签放大段文字, h1~h6常用于标题,strong加粗强掉….. 语义化的好处: 1:去掉或样式丢失的时候能让页面呈现清晰的结构: html本 ...
- 如何发布可用于azure的镜像文件
摘要:本篇文章讲述如何将蝉知,禅道和然之发布azure的镜像. azure是微软提供的云服务平台.并且针对中国用户专门开通了www.windowsazure.cn站点.同时还成了微软开放中国公司,推出 ...
- python 通过ftplib 实现上传下载
#!/usr/bin/python #-*- coding: utf-8 -*- from ftplib import FTP def ftpconnect() ftp_server = 'ftp.p ...
- 【279】◀▶ Python 运算符说明
参考:Python 运算符说明 目录: 一.算术运算符 二.比较(关系)运算符 三.赋值运算符 四.位运算符 五.逻辑运算符 六.成员运算符 七.身份运算符 八.运算符优先级 一.Python 算术运 ...
- textarea标签提示录入剩余字数
textarea标签提示录入剩余字数 <textarea onkeydown="checkMaxInput(this,300)" onkeyup="checkMax ...
- java用JDBC连接数据库的方式
//驱动位置String sDBDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//连接数据库地址名字String ...
- vim 的小幅移动
1.操作符命令和位移 x --->删除一个字符,4x ---->删除4个字符. dw --->可以删除一个单词,d4w ---->删除4个单词. d$ ----> 删除 ...