当前位置:首页 » 安卓系统 » android上传图片base64

android上传图片base64

发布时间: 2025-04-29 02:59:18

⑴ AndroidKeyStore Cipher简单使用

Android开发中,敏感数据存储需求提升,Android提供了Cipher加密方式,确保数据安全性。

初始化Cipher生成iv,随机数组作为解密钥匙,每次init确保iv独特性,增加私密性。

获取Cipher的SecretKey,为初始化后的Cipher提供密钥支持。

实现加密功能,针对json数据加密,iv数组进行Base64加密保存,增加数据安全。

解密过程,确保数据完整性。

加密数据保存到SharePerference,提供额外安全保障,相比于早期MD5、AES、DES等固定密钥方法,Cipher方式更简洁方便。

适合session、token、用户信息等敏感数据加密,确保数据在手机存储过程中的安全。

建议开发者在实际应用中参考此方法,提升数据存储安全水平。

⑵ 跪求 DES跨(C# Android IOS)三个平台通用的加解密方法


#region跨平台加解密(c#安卓IOS)

//publicstaticstringsKey="12345678";

/////<summary>

/////解密

/////</summary>

/////<paramname="pToDecrypt">要解密的以Base64</param>

/////<paramname="sKey">密钥,且必须为8位</param>

/////<returns>已解密的字符串</returns>

//publicstaticstringDesDecrypt(stringpToDecrypt)

//{

////转义特殊字符

//pToDecrypt=pToDecrypt.Replace("-","+");

//pToDecrypt=pToDecrypt.Replace("_","/");

//pToDecrypt=pToDecrypt.Replace("~","=");

//byte[]inputByteArray=Convert.FromBase64String(pToDecrypt);

//using(DESCryptoServiceProviderdes=newDESCryptoServiceProvider())

//{

//des.Key=ASCIIEncoding.ASCII.GetBytes(sKey);

//des.IV=ASCIIEncoding.ASCII.GetBytes(sKey);

//System.IO.MemoryStreamms=newSystem.IO.MemoryStream();

//using(CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write))

//{

//cs.Write(inputByteArray,0,inputByteArray.Length);

//cs.FlushFinalBlock();

//cs.Close();

//}

//stringstr=Encoding.UTF8.GetString(ms.ToArray());

//ms.Close();

//returnstr;

//}

//}

/////<summary>

/////对字符串进行DES加密

/////</summary>

/////<paramname="sourceString">待加密的字符串</param>

/////<returns>加密后的BASE64编码的字符串</returns>

//publicstringEncrypt(stringsourceString)

//{

//byte[]btKey=Encoding.UTF8.GetBytes(sKey);

//byte[]btIV=Encoding.UTF8.GetBytes(sKey);

//DESCryptoServiceProviderdes=newDESCryptoServiceProvider();

//using(MemoryStreamms=newMemoryStream())

//{

//byte[]inData=Encoding.UTF8.GetBytes(sourceString);

//try

//{

//using(CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(btKey,btIV),CryptoStreamMode.Write))

//{

//cs.Write(inData,0,inData.Length);

//cs.FlushFinalBlock();

//}

//returnConvert.ToBase64String(ms.ToArray());

//}

//catch

//{

//throw;

//}

//}

//}

#endregion

安卓---------------------------------------------------------------------------

////加密

//(Stringmessage,Stringkey)

//throwsException{

//byte[]bytesrc=Base64.decode(message.getBytes(),Base64.DEFAULT);

//Ciphercipher=Cipher.getInstance("DES/CBC/PKCS5Padding");

//DESKeySpecdesKeySpec=newDESKeySpec(key.getBytes("UTF-8"));

//SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");

//SecretKeysecretKey=keyFactory.generateSecret(desKeySpec);

//IvParameterSpeciv=newIvParameterSpec(key.getBytes("UTF-8"));

//cipher.init(Cipher.DECRYPT_MODE,secretKey,iv);

//byte[]retByte=cipher.doFinal(bytesrc);

//returnnewString(retByte);

//}

////解密

//(Stringmessage,Stringkey)

//throwsException{

//Ciphercipher=Cipher.getInstance("DES/CBC/PKCS5Padding");

//DESKeySpecdesKeySpec=newDESKeySpec(key.getBytes("UTF-8"));

//SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");

//SecretKeysecretKey=keyFactory.generateSecret(desKeySpec);

//IvParameterSpeciv=newIvParameterSpec(key.getBytes("UTF-8"));

//cipher.init(Cipher.ENCRYPT_MODE,secretKey,iv);

//byte[]encryptbyte=cipher.doFinal(message.getBytes());

//returnnewString(Base64.encode(encryptbyte,Base64.DEFAULT));

//}

Ios--------------------------------------------------------------------------------------------------------------------

staticconstchar*encryptWithKeyAndType(constchar*text,CCOperationencryptOperation,char*key)
{
NSString*textString=[[NSStringalloc]initWithCString:textencoding:NSUTF8StringEncoding];
//NSLog(@"[[item.urldescription]UTF8String=%@",textString);
constvoid*dataIn;
size_tdataInLength;

if(encryptOperation==kCCDecrypt)//传递过来的是decrypt解码
{
//解码base64
NSData*decryptData=[GTMBase64decodeData:[textStringdataUsingEncoding:NSUTF8StringEncoding]];//转成utf-8并decode
dataInLength=[decryptDatalength];
dataIn=[decryptDatabytes];
}
else//encrypt
{
NSData*encryptData=[textStringdataUsingEncoding:NSUTF8StringEncoding];
dataInLength=[encryptDatalength];
dataIn=(constvoid*)[encryptDatabytes];
}


CCCryptorStatusccStatus;
uint8_t*dataOut=NULL;//可以理解位type/typedef的缩写(有效的维护了代码,比如:一个人用int,一个人用long。最好用typedef来定义)
size_tdataOutAvailable=0;//size_t是操作符sizeof返回的结果类型
size_tdataOutMoved=0;

dataOutAvailable=(dataInLength+kCCBlockSizeDES)&~(kCCBlockSizeDES-1);
dataOut=malloc(dataOutAvailable*sizeof(uint8_t));
memset((void*)dataOut,00,dataOutAvailable);//将已开辟内存空间buffer的首1个字节的值设为值0

//NSString*initIv=@"12345678";
constvoid*vkey=key;
constvoid*iv=(constvoid*)key;//[initIvUTF8String];

//CCCrypt函数加密/解密
ccStatus=CCCrypt(encryptOperation,//加密/解密
kCCAlgorithmDES,//加密根据哪个标准(des,3des,aes。。。。)
kCCOptionPKCS7Padding,//选项分组密码算法(des:对每块分组加一次密3DES:对每块分组加三个不同的密)
vkey,//密钥加密和解密的密钥必须一致
kCCKeySizeDES,//DES密钥的大小(kCCKeySizeDES=8)
iv,//可选的初始矢量
dataIn,//数据的存储单元
dataInLength,//数据的大小
(void*)dataOut,//用于返回数据
dataOutAvailable,
&dataOutMoved);

NSString*result=nil;

if(encryptOperation==kCCDecrypt)//encryptOperation==1解码
{
//得到解密出来的data数据,改变为utf-8的字符串
result=[[NSStringalloc]initWithData:[NSDatadataWithBytes:(constvoid*)dataOutlength:(NSUInteger)dataOutMoved]encoding:NSUTF8StringEncoding];
}
else//encryptOperation==0(加密过程中,把加好密的数据转成base64的)
{
//编码base64
NSData*data=[NSDatadataWithBytes:(constvoid*)dataOutlength:(NSUInteger)dataOutMoved];
result=[GTMBase64stringByEncodingData:data];
}

return[resultUTF8String];

}
+(NSString*)encryptWithContent:(NSString*)contenttype:(CCOperation)typekey:(NSString*)aKey
{
constchar*contentChar=[contentUTF8String];
char*keyChar=(char*)[aKeyUTF8String];
constchar*miChar;
miChar=encryptWithKeyAndType(contentChar,type,keyChar);
return[NSStringstringWithCString:miCharencoding:NSUTF8StringEncoding];
}

⑶ android 怎么多图上传 okhttp

android上传图片是先将图片文件转换成流文件:可用以下代码转换流文件,imgPath为图片的完整地址
//图片转化成base64字符串
public static String imgToBase64(String imgPath) {
InputStream in = null;
byte[] data = null;
//读取图片字节数组
try {
in = new FileInputStream(imgPath);
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e){
e.printStackTrace();
}
//对字节数组Base64编码
sun.misc.BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);//返回Base64编码过的字节数组字符串
}
然后图片文件就成为一串字符串啦,传递方法和普通字符串一样,多图使用分号隔开即可,后台收到后直接将流文件转换成图片保存即可。

热点内容
唱吧不上传可以分享吗 发布:2025-04-29 06:56:49 浏览:649
存储设备电视机 发布:2025-04-29 06:49:13 浏览:883
专破加密的wifi手机版 发布:2025-04-29 06:40:21 浏览:116
ftp传输模式命令 发布:2025-04-29 06:40:20 浏览:804
请求分页式存储管理 发布:2025-04-29 06:38:44 浏览:181
cf脚本抢 发布:2025-04-29 06:29:43 浏览:319
访问控制原理 发布:2025-04-29 06:27:32 浏览:572
root脚本精灵 发布:2025-04-29 06:27:28 浏览:132
华为手机短信加密 发布:2025-04-29 06:25:15 浏览:694
拿货算法 发布:2025-04-29 06:23:00 浏览:944