wifi的加密类型梳理

https://blog.csdn.net/wenzhi20102321/article/details/126219495

WEP: Wired Equivalent Privacy(有线等效加密) ,
保护无线网络信息安全的体制,无线网络通过无线电传播,为了保证数据机密性而设计。
但是存在一些漏洞,比如针对EAP的密钥截取攻击,和针对数据完整性的Replay Attack(回放攻击),已经不推荐使用。

WPA: WiFi Protected Access (Wi-Fi访问保护),
是一种保护无线网络访问安全的技术标准,WPA是为了解决EAP的几个严重的弱点而产生的,
通过128位密钥加上48位初向量和可以在使用中动态改变密钥的“临时密钥完整性协议”(TKIP),
使用RC4加密、使用Michael消息验证码,避免针对EAP的密钥截取攻击和Replay Attack。

WPA2:WPA的升级版,
采用CCMP计数器模式密码块链消息完整码协议,使用CBC-MAC替代Michael消息验证码,
使用AES取代RC4加密算法。在身份认证和保证数据完整性上更安全。

用ScanResult.capabilities来获取认证方式

https://developer.android.google.cn/reference/android/net/wifi/SoftApConfiguration

android11热点貌似只提供了WPA2-PSK(其实也就是WPA2-PERSONAL),没有其他的WPA-PSK等

int    SECURITY_TYPE_OPEN
THe definition of security type OPEN.

int    SECURITY_TYPE_WPA2_PSK
The definition of security type WPA2-PSK.

int    SECURITY_TYPE_WPA3_OWE
The definition of security type WPA3-OWE.

int    SECURITY_TYPE_WPA3_OWE_TRANSITION
The definition of security type WPA3-OWE Transition.

int    SECURITY_TYPE_WPA3_SAE
The definition of security type WPA3-SAE.

int    SECURITY_TYPE_WPA3_SAE_TRANSITION
The definition of security type WPA3-SAE Transition mode.

https://developer.android.google.cn/reference/android/net/wifi/WifiConfiguration#SECURITY_TYPE_OPEN

这是wifi station的连接加密类型,更复杂一点儿,应该是为了连上更多的热点

https://blog.csdn.net/downloadname/article/details/77864537

手机一般可以在添加wifi网络里指定更多加密类型的wifi热点。

https://baike.baidu.com/item/WPA2/4913331?fr=aladdin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是获取WiFi加密类型的Java代码示例: ``` import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; public class WifiUtils { private WifiManager wifiManager; public WifiUtils(WifiManager wifiManager) { this.wifiManager = wifiManager; } // 获取WiFi加密类型 public String getWifiEncryptionType(ScanResult scanResult) { String encryptionType = ""; // 获取WiFi的安全类型 String capabilities = scanResult.capabilities; if (capabilities.contains("WPA") || capabilities.contains("WPA2")) { encryptionType = "WPA/WPA2"; } else if (capabilities.contains("WEP")) { encryptionType = "WEP"; } else { encryptionType = "无密码"; } return encryptionType; } // 连接WiFi public boolean connectWifi(String ssid, String password, String encryptionType) { // 配置WiFi信息 WifiConfiguration wifiConfig = new WifiConfiguration(); wifiConfig.SSID = "\"" + ssid + "\""; if (encryptionType.equals("WPA/WPA2")) { wifiConfig.preSharedKey = "\"" + password + "\""; wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); } else if (encryptionType.equals("WEP")) { wifiConfig.wepKeys[0] = "\"" + password + "\""; wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); } else { wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); } // 连接WiFi int networkId = wifiManager.addNetwork(wifiConfig); boolean isConnected = wifiManager.enableNetwork(networkId, true); return isConnected; } } ``` 使用示例: ``` WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiUtils wifiUtils = new WifiUtils(wifiManager); // 扫描WiFi列表 List<ScanResult> scanResults = wifiManager.getScanResults(); for (ScanResult scanResult : scanResults) { String ssid = scanResult.SSID; String encryptionType = wifiUtils.getWifiEncryptionType(scanResult); // 连接WiFi boolean isConnected = wifiUtils.connectWifi(ssid, "password", encryptionType); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值