当前位置:首页 » 密码管理 » android网络请求加密

android网络请求加密

发布时间: 2022-04-24 02:04:12

A. android中发送网络请求的技术有哪些

Get方式:

[java] view plain
// Get方式请求
public static void requestByGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建一个URL对象
URL url = new URL(path);
// 打开一个HttpURLConnection连接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 设置连接超时时间
urlConn.setConnectTimeout(5 * 1000);
// 开始连接
urlConn.connect();
// 判断请求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 获取返回的数据
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_GET, "Get方式请求成功,返回数据如下:");
Log.i(TAG_GET, new String(data, "UTF-8"));
} else {
Log.i(TAG_GET, "Get方式请求失败");
}
// 关闭连接
urlConn.disconnect();
}

Post方式:

[java] view plain
// Post方式请求
public static void requestByPost() throws Throwable {
String path = "https://reg.163.com/logins.jsp";
// 请求的参数转换为byte数组
String params = "id=" + URLEncoder.encode("helloworld", "UTF-8")
+ "&pwd=" + URLEncoder.encode("android", "UTF-8");
byte[] postData = params.getBytes();
// 新建一个URL对象
URL url = new URL(path);
// 打开一个HttpURLConnection连接
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
// 设置连接超时时间
urlConn.setConnectTimeout(5 * 1000);
// Post请求必须设置允许输出
urlConn.setDoOutput(true);
// Post请求不能使用缓存
urlConn.setUseCaches(false);
// 设置为Post请求
urlConn.setRequestMethod("POST");
urlConn.setInstanceFollowRedirects(true);
// 配置请求Content-Type
urlConn.setRequestProperty("Content-Type",
"application/x-www-form-urlencode");
// 开始连接
urlConn.connect();
// 发送请求参数
DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
dos.write(postData);
dos.flush();
dos.close();
// 判断请求是否成功
if (urlConn.getResponseCode() == HTTP_200) {
// 获取返回的数据
byte[] data = readStream(urlConn.getInputStream());
Log.i(TAG_POST, "Post请求方式成功,返回数据如下:");
Log.i(TAG_POST, new String(data, "UTF-8"));
} else {
Log.i(TAG_POST, "Post方式请求失败");
}
}

org.apache.http包中的HttpGet和HttpPost类

Get方式:

[java] view plain
// HttpGet方式请求
public static void requestByHttpGet() throws Exception {
String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";
// 新建HttpGet对象
HttpGet httpGet = new HttpGet(path);
// 获取HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
// 获取HttpResponse实例
HttpResponse httpResp = httpClient.execute(httpGet);
// 判断是够请求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 获取返回的数据
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpGet方式请求成功,返回数据如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpGet方式请求失败");
}
}

Post方式:

[java] view plain
// HttpPost方式请求
public static void requestByHttpPost() throws Exception {
String path = "https://reg.163.com/logins.jsp";
// 新建HttpPost对象
HttpPost httpPost = new HttpPost(path);
// Post参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", "helloworld"));
params.add(new BasicNameValuePair("pwd", "android"));
// 设置字符集
HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8);
// 设置参数实体
httpPost.setEntity(entity);
// 获取HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
// 获取HttpResponse实例
HttpResponse httpResp = httpClient.execute(httpPost);
// 判断是够请求成功
if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {
// 获取返回的数据
String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");
Log.i(TAG_HTTPGET, "HttpPost方式请求成功,返回数据如下:");
Log.i(TAG_HTTPGET, result);
} else {
Log.i(TAG_HTTPGET, "HttpPost方式请求失败");
}
}

B. android网络请求的几种方式有哪些有什么不同

普遍Get,Post两种方式
get请求,比如我现在登录了网址在看你的问题,网址如下:
http://..com/question/1434459787701892939.html??entry=qb_ihome_tag (?后面这个就是字段)
这段网址是Get请求 它将表单内各个字段与其内容放置在HTML HEADER内一起传送

也就是以明文的形式显示
Post请求的这些字段将会以字符集的形式设置到你的请求中也就是密文
这些内容不会显示在你输入的网址中
(HttpURLConnection)
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", "helloworld"));
params.add(new BasicNameValuePair("pwd", "android"));
// 设置字符集
HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8);
// 设置参数实体
xx.setEntity(entity);
http://blog.csdn.net/zuolongsnail/article/details/6373051 具体可以他的博客

C. android怎么保证用户名密码安全

如果是保存在本地数据库,在设置里面修改用户密码通常会有一个设置,那就更新本地数据库里的密码。

如果你的帐号信息是保存在服务端的,把新密码提交到服务端就好了
在该Activity中用map或者namevalue装载修改的密码和其他必须的参数android开发中,更新数据库,用户的密码肯定是放在服务器端的数据库中的,写个异步任务类。)。至于密码类型长度这些要求的判断最好直接在装载数据前就判断。手机端只是一个请求。如果服务器端都不允许你修改密码,这一点毫无疑问,然后进行更新。若要实现用户密码的修改,那么原理就是根据用户注册时返回的userid(通常用sharedpreference用户手机本地文件中)来查询服务器端的数据库中该用户的账号密码数据,首先服务器端必须要有用户修改密码的端口,那么这一功能根本不可能实现。
若是服务器端允许用户修改密码,服务器读取用户请求。用户发出修改密码这样的请求后,更多的操作要放在服务器端。大致是,写好用户修改密码的页面之后,服务器根据用户提交的信息对数据库更新,然后在提交按钮的的监听事件里发送请求至服务器(当然发送请求获取数据这些操作别放进主线程。
详细做法无法赘述,减轻服务器压力
写一个设置界面,设置修改密码的按钮然后添加事件不就好了

D. Android 客户端如何防止网络监控抓取数据

加密啊。安装包,代码,网络请求等等,许多方式做加密来保证软件安全。

E. 安卓短使用了AES加密 服务端是servlet 以前发送请求的时候是name=小明&age=12

随着密码分析技术的提高,新的数据加密标准AES取代了过时的DES。文章在阐述AES/RSA加密算法的基础上,分别给出了利用AES/RSA实现客户端/服务器端网络数据传输的加密流程。最后在比较AES算法和RSA算法基础上,将AES与RSA相结合提出一种新的数据加密方案。

基本需求及概念
随着Internet网的广泛应用,信息安全问题日益突出,以数据加密技术为核心的信息安全技术也得到了极大的发展。目前的数据加密技术根据加密密钥类型可分私钥加密(对称加密)系统和公钥加密(非对称加密)系统[1]。对称加密算法是较传统的加密体制,通信双方在加/解密过程中使用他们共享的单一密钥,鉴于其算法简单和加密速度快的优点,目前仍然是主流的密码体制之一。最常用的对称密码算法是数据加密标准(DES)算法,但是由于DES密钥长度较短,已经不适合当今分布式开放网络对数据加密安全性的要求。最后,一种新的基于Rijndael算法对称高级数据加密标准AES取代了数据加密标准DES。非对称加密由于加/解密钥不同(公钥加密,私钥解密),密钥管理简单,也得到广泛应用。RSA是非对称加密系统最着名的公钥密码算法。
AES算法
基本原理及算法流程
美国国家标准和技术研究所(NIST)经过三轮候选算法筛选,从众多的分组密码中选中Rijndael算法作为高级加密标准(AES)。Rijndael密码是一个迭代型分组密码,分组长度和密码长度都是可变的,分组长度和密码长度可以独立的指定为128比特,192比特或者256比特。AES的加密算法的数据处理单位是字节,128位的比特信息被分成16个字节,按顺序复制到一个4*4的矩阵中,称为状态(state),AES的所有变换都是基于状态矩阵的变换。
用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所示)。在轮函数的每一轮迭代中,包括四步变换,分别是字节代换运算(ByteSub())、行变换(ShiftRows())、列混合(MixColumns())以及轮密钥的添加变换AddRoundKey()[3],其作用就是通过重复简单的非线形变换、混合函数变换,将字节代换运算产生的非线性扩散,达到充分的混合,在每轮迭代中引入不同的密钥,从而实现加密的有效性。
表1 是三种不同类型的AES加密密钥分组大小与相应的加密轮数的对照表。加密开始时,输入分组的各字节按表2 的方式装入矩阵state中。如输入ABCDEFGHIJKLMNOP,则输入块影射到如表2的状态矩阵中。

F. 安卓http和https的区别

HTTPS()安全超文本传输协议它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。HTTPS和HTTP的区别:https协议需要到ca申请证书,一般免费证书很少,需要交费。http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全HTTPS解决的问题:1.信任主机的问题.采用https的server必须从CA申请一个用于证明服务器用途类型的证书.改证书只有用于对应的server的时候,客户度才信任次主机.所以目前所有的银行系统网站,关键部分应用都是https的.客户通过信任该证书,从而信任了该主机.其实这样做效率很低,但是银行更侧重安全.这一点对我们没有任何意义,我们的server,采用的证书不管自己issue还是从公众的地方issue,客户端都是自己人,所以我们也就肯定信任该server.2.通讯过程中的数据的泄密和被窜改1.一般意义上的https,就是server有一个证书.a)主要目的是保证server就是他声称的server.这个跟第一点一样.b)服务端和客户端之间的所有通讯,都是加密的.i.具体讲,是客户端产生一个对称的密钥,通过server的证书来交换密钥.一般意义上的握手过程.ii.加下来所有的信息往来就都是加密的.第三方即使截获,也没有任何意义.因为他没有密钥.当然窜改也就没有什么意义了.2.少许对客户端有要求的情况下,会要求客户端也必须有一个证书.a)这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA认证过的身份.应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.b)目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.HTTPS一定是繁琐的.a)本来简单的http协议,一个get一个response.由于https要还密钥和确认加密算法的需要.单握手就需要6/7个往返.i.任何应用中,过多的roundtrip肯定影响性能.b)接下来才是具体的http协议,每一次响应或者请求,都要求客户端和服务端对会话的内容做加密/解密.i.尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL芯片.如果CPU信能比较低的话,肯定会降低性能,从而不能serve的请求.ii.加密后数据量的影响.所以,才会出现那么多的安全认证提示

G. 安卓网络请求数据时如何保证数据的完整性和安全性使用哪种加密

通过网络传输数据,需要保证数据的完整性、保密性,以及能够对数据的发送者进行身份验证。这些都需要通过一些加密算法实现。

对称加密:
加密和解密使用同一个密钥,特点:保证了数据的保密性。局限性:无法解决密钥交换问题。常用的算法有:DES,3DES,AES;

公钥加密:
生成一个密钥对(私钥和公钥),加密时用私钥加密,解密时用公钥解密,特点:解决了密钥交换问题。局限性:对大的数据加密速度慢。

单向加密:
提取数据的特征码,特点:定长输出,不可逆,可检验数据的完整性。局限性:无法保证数据的保密性。常用算法:MD5、SHA1、CRC-32。

三种加密方法各有优缺点,在时实际应用中,数据从发送方到达接收方,通常是这样应用的:

1) 首先对要发送的数据做单向加密,获取数据的特征码;

2) 对特征码用发送方的私钥进行加密生成S1;

3) 然后对S1和数据进行对称加密生成S2;

4) 最后将S2和对称加密的密码使用接收方的公钥进行加密。

这样一来数据在传输过程中的完整性、保密性以及对发送方身份的验证都能得到保障。

当数据到达接收方时,接收方先用自己的私钥对接收到的数据进行解密,得到密码和加密的数据;使用密码对加密数据解密,得到加密的特征码和数据;用发送方的公钥解密特征码,如果能解密,则说明该数据是由发送方所发;反之则不是,这便实现了身份验证;最后计算数据的特征码和解密出来的特征码做对比,如果一样,则该数据没有被修改;反之则数据被修改过了。

H. android https和http有什么区别

https是加密的,用双重密钥加密。
①首先制作一个证书,保存RSA密钥,客户端和服务端分别保存两份密钥;
②然后每次请求内容时随机生成一个AES密钥,客户端请求的内容和服务端返回的内容都使用这个AES密钥加密,保证在传输过程中即使被黑客抓包他也看不到原文,只能看到密文;
③AES密钥本身(一般是6位十六进制数)被第一步的RSA密钥加密,由于Android端和服务器端保存了rsa的公钥和私钥,所以可以知道本次传输的AES密钥,进而解析内容;
以上就是https加密传输的大致过程,而http传输则没有加密过程,全部明文传输,一旦被抓包内容也就泄露了。

I. Android httpdns请求方法

HttpDNS是使用HTTP协议向DNS服务器的80端口进行请求,代替传统的DNS协议向DNS服务器的53端口进行请求。也就是使用Http协议去进行dns解析请求,将服务器返回的解析结果,也就是域名对应的服务器ip获得,直接向该ip发起对应的api服务请求,代替使用域名。那么为什么要使用HttpDNS呢?主要原因有三点LocalDNS劫持平均访问延迟下降用户连接失败率下降LocalDNS劫持: 由于HttpDNS是通过ip直接请求http获取服务器A记录地址,不存在向本地运营商询问domain解析过程,所以从根本避免了劫持问题。 (对于http内容tcp/ip层劫持,可以使用验证因子或者数据加密等方式来保证传输数据的可信度)平均访问延迟下降: 由于是ip直接访问省掉了一次domain解析过程,(即使系统有缓存速度也会稍快一些‘毫秒级’)通过智能算法排序后找到最快节点进行访问。用户连接失败率下降: 通过算法降低以往失败率过高的服务器排序,通过时间近期访问过的数据提高服务器排序,通过历史访问成功记录提高服务器排序。如果ip(a)访问错误,在下一次返回ip(b)或者ip(c) 排序后的记录。(LocalDNS很可能在一个ttl时间内(或多个ttl)都是返回记录

J. android https 支持哪些标准

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议
它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。
它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
HTTPS和HTTP的区别:
https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全
HTTPS解决的问题:
1
. 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server
的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机.
其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue
还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
2 . 通讯过程中的数据的泄密和被窜改
1. 一般意义上的https, 就是 server 有一个证书.
a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.
b) 服务端和客户端之间的所有通讯,都是加密的.
i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.
ii. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.
2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.
HTTPS 一定是繁琐的.
a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.
i. 任何应用中,过多的round trip 肯定影响性能.
b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.
i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.
ii. 加密后数据量的影响. 所以,才会出现那么多的安全认证提示

热点内容
c语言ba7aaa 发布:2025-05-11 21:36:25 浏览:987
九阴免费脚本 发布:2025-05-11 21:16:23 浏览:69
sqlserver存储过程递归 发布:2025-05-11 21:03:00 浏览:978
ios更新数据库 发布:2025-05-11 20:51:42 浏览:668
python开发培训哪家好 发布:2025-05-11 20:26:47 浏览:46
易语言配置怎么取 发布:2025-05-11 20:18:23 浏览:366
无法初始化程序配置怎么解决 发布:2025-05-11 20:18:22 浏览:15
cas源码部署 发布:2025-05-11 20:18:20 浏览:208
你好呀勇士五个技能该怎么配置 发布:2025-05-11 19:57:11 浏览:729
虚拟世界服务器怎么调中文 发布:2025-05-11 19:55:50 浏览:442