• linux rtl8188eu ap模式 密码错误 disassoc reason code(8)


    2018-05-30

    14:12:46

    于深圳南山科技园

    最近有个项目,客户需要通过手机app通过机器wifi热点连接,从而实现对机器的设置及视频的实时预览等各种功能。这两天一直在搞rtl8188eu的wifi热点,驱动服务都搭建好了,但是出现设置密码后无法连接,折腾了好几天也没找到原因及解决办法,

    硬件平台:全志T3 + rtl8188euwifi模块(usb连接)

    系统:linux kernel-3.10

    ap启动脚本:ap-start.sh

    hostapd版本:0.8x

    DHCp版本:4.1.1-P1

    ap-start.sh

    ifconfig wlan0 192.168.1.24  netmask 255.255.255.0
    sleep 1
    hostapd /etc/hostapd.conf -B
    touch  /var/lib/dhcp/dhcpd.leases
    dhcpd

    /etc/hostapd.conf

    ##### hostapd configuration file ##############################################
    
    interface=wlan0
    ctrl_interface=/var/run/hostapd
    ssid=carwifi
    channel=9
    wpa=1
    wpa_passphrase=88888888
    
    # Device Name
    # User-friendly description of device; up to 32 octets encoded in UTF-8
    device_name=RTL8192CU
    
    
    # Primary Device Type
    # Used format: <categ>-<OUI>-<subcateg>
    # categ = Category as an integer value
    # OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
    #       default WPS OUI
    # subcateg = OUI-specific Sub Category as an integer value
    # Examples:
    #   1-0050F204-1 (Computer / PC)
    #   1-0050F204-2 (Computer / Server)
    #   5-0050F204-1 (Storage / NAS)
    #   6-0050F204-1 (Network Infrastructure / AP)
    device_type=6-0050F204-1
    
    
    ##### default configuration #######################################
    
    driver=rtl871xdrv
    beacon_int=100
    hw_mode=g
    ieee80211n=1
    wme_enabled=1
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP
    rsn_pairwise=TKIP CCMP
    max_num_sta=8
    wpa_group_rekey=86400

    /etc/dhcpd.conf

    #
    # Sample configuration file 
    #
    
    default-lease-time 600;
    max-lease-time 7200;
    
    # If this DHCP server is the official DHCP server for the local
    # network, the authoritative directive should be uncommented.
    #authoritative;
    
    # Use this to send dhcp log messages to a different log file (you also
    # have to hack syslog.conf to complete the redirection).
    log-facility local7;
    
    # No service will be given on this subnet, but declaring it helps the 
    # DHCP server to understand the network topology.
    
    subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.8 192.168.1.128; 
    }

    开机启动log如下

    [    5.600133] insmod_host_driver
    [    5.600133] 
    [    5.606765] [ehci0-controller]: sunxi_usb_enable_ehci
    [    5.609585] RTL871X: module init start
    [    5.609593] RTL871X: rtl8188eu driver version = v4.2.5_9909.20131204_beta
    [    5.609597] RTL871X: build time: May 21 2018 17:49:00
    [    5.630092] [sunxi-ehci0]: probe, pdev->name: 1c14000.ehci0-controller, sunxi_ehci: 0xc0a7a474, 0x:f1c14000, irq_no:47
    [    5.642162] sunxi-ehci 1c14000.ehci0-controller: SW USB2.0 'Enhanced' Host Controller (EHCI) Driver
    [    5.652338] sunxi-ehci 1c14000.ehci0-controller: new USB bus registered, assigned bus number 1
    [    5.662652] sunxi-ehci 1c14000.ehci0-controller: irq 71, io mem 0xce0e21c0
    [    5.690130] sunxi-ehci 1c14000.ehci0-controller: USB 0.0 started, EHCI 1.00
    [    5.697960] ehci_irq: highspeed device connect
    [    5.697961] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
    [    5.697969] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    5.697976] usb usb1: Product: SW USB2.0 'Enhanced' Host Controller (EHCI) Driver
    [    5.697981] usb usb1: Manufacturer: Linux 3.10.65 ehci_hcd
    [    5.697987] usb usb1: SerialNumber: sunxi-ehci
    [    5.739687] usbcore: registered new interface driver rtl8188eu
    [    5.740200] hub 1-0:1.0: USB hub found
    [    5.740248] hub 1-0:1.0: 1 port detected
    [    5.740903] [ohci0-controller]: sunxi_usb_enable_ohci
    [    5.740914] [sunxi-ohci0]: probe, pdev->name: 1c14000.ohci0-controller, sunxi_ohci: 0xc0a79c94
    [    5.740988] sunxi-ohci 1c14000.ohci0-controller: SW USB2.0 'Open' Host Controller (OHCI) Driver
    [    5.741031] sunxi-ohci 1c14000.ohci0-controller: new USB bus registered, assigned bus number 2
    [    5.741124] sunxi-ohci 1c14000.ohci0-controller: irq 72, io mem 0xce0e21c0
    [    5.797124] RTL871X: module init ret=0
    [    5.804269] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
    [    5.811983] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    5.820065] usb usb2: Product: SW USB2.0 'Open' Host Controller (OHCI) Driver
    [    5.827902] usb usb2: Manufacturer: Linux 3.10.65 ohci_hcd
    [    5.834168] usb usb2: SerialNumber: sunxi-ohci
    [    5.841066] hub 2-0:1.0: USB hub found
    [    5.845235] hub 2-0:1.0: 1 port detected
    [    6.050213] usb 1-1: new high-speed USB device number 2 using sunxi-ehci
    [    6.203434] usb 1-1: New USB device found, idVendor=0bda, idProduct=8179
    [    6.210984] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [    6.218838] usb 1-1: Product: 802.11n WLAN NIC
    [    6.223950] usb 1-1: Manufacturer: Realtek
    [    6.243032] bFWReady == _FALSE call reset 8051...
    [    6.337470] RTL871X: rtw_ndev_init(wlan0)
    [    6.353064] RTL871X: rtw_ndev_init(wlan1)
    [    8.221550] ==> rtl8188e_iol_efuse_patch 
    [    8.677931] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    Configuration file: /etc/hostapd.conf
    drv->ifindex=6
    l2_sock_recv==l2_sock_xmit=0x0xb17648
    +rtl871x_sta_deauth_ops, ff:ff:ff:ff:ff:ff is deauth, reason=2
    rtl871x_set_key_ops
    rtl871x_set_key_ops
    rtl871x_set_key_ops
    rtl871x_set_key_ops
    Using interface wlan0 with hwaddr 14:6b:9c:08:f7:df and ssid 'carwifi'
    rtl871x_set_wps_assoc_resp_ie
    rtl871x_set_wps_beacon_ie
    rtl871x_set_wps_probe_resp_ie
    rtl871x_set_beacon_ops
    [   10.490315] gpu cooling callback set freq limit 384
    [   10.894119] RTL871X: assoc success
    rtl871x_set_hidden_ssid ignore_b[   10.898742] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
    roadcast_ssid:0, carwifi,7
    rtl871x_set_acl
    Internet Systems Consortium DHCP Server 4.1.1-P1
    Copyright 2004-2010 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/
    Wrote 0 leases to leases file.
    Listening on LPF/wlan0/14:6b:9c:08:f7:df/192.168.1.0/24
    Sending on   LPF/wlan0/14:6b:9c:08:f7:df/192.168.1.0/24
    Sending on   Socket/fallback/fallback-net

    问题现象:

    wifi热点已经可以正常扫描识别,在设置wpa=0(不采用wpa加密,无需密码可以直接连接)时候,设备可以正常连接到该热点。

    /var/run/hostapd.leases

    # The format of this file is documented in the dhcpd.leases(5) manual page.
    # This lease file was written by isc-dhcp-4.1.1-P1
    
    lease 192.168.1.8 {
      starts 4 1970/01/01 04:30:12;
      ends 4 1970/01/01 04:40:12;
      cltt 4 1970/01/01 04:30:12;
      binding state active;
      next binding state free;
      hardware ethernet 2c:f0:a2:98:01:8d;
      uid "01,36024223001215";
      client-hostname "iPhone-9S";
    }

     

    但是如果设置成1或者2、3设备都无法连接到改热点,一直弹出密码错误。同事内核输出log

     [   59.865837] RTL871X: ap recv disassoc reason code(8) sta:2c:f0:a2:98:01:8d
    [   59.876976] RTL871X: set pairwise key to hw: alg:0(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:0 

    根据log中提供的信息ap recv disassoc reason code(8)去网上搜索了一下提供的解释如下。

    https://blog.michaelfmcnamara.com/2007/11/80211-dissassociation-codes/

    Value

    802.11 or Symbol/WPA Reason Code

    Description

    0

    REASON_CODE_80211_SUCCESS

    Reserved internally to indicate success

    1.

    REASON_CODE_80211_UNSPECIFIED_ERROR

    Unspecified Reason

    3.

    DISASSOCIATION_REASON_CODE_STATION_LEAVING_ESS

    Deauthenticated because sending station has left or is leaving IBSS or ESS

    4.

    DISASSOCIATION_REASON_CODE_INACTIVITY

    Disassociated due to inactivity

    5.

    DISASSOCIATION_REASON_CODE_STATION_LIMIT_EXCEEDED

    Disassociated because AP is unable to handle all currently associated stations

    6.

    DISASSOCIATION_REASON_CODE_CLASS_2_PKT_FROM_NON_AUTH

    Class 2 frame received from non-authenticated station

    7.

    DISASSOCIATION_REASON_CODE_CLASS_3_PKT_FROM_NON_ASSOC

    Class 3 frame received from non-associated station

    8.

    DISASSOCIATION_REASON_CODE_STATION_LEAVING_BSS

    Disassociated because sending station has left or is leaving BSS

    9.

    DISASSOCIATION_REASON_CODE_STATION_NOT_AUTHENTICATED

    Station requesting re-association is not authenticated with responding station

    13.

    DISASSOCIATION_REASON_CODE_INVALID_INFORMATION_ELEMENT

    Invalid Information Element

    14.

    DISASSOCIATION_REASON_CODE_MIC_FAILURE

    Michael MIC failure

    15.

    DISASSOCIATION_REASON_CODE_4WAY_HANDSHAKE_TIMEOUT

    4-Way Handshake timeout

    16.

    DISASSOCIATION_REASON_CODE_GROUP_KEY_UPDATE_TIMEOUT

    Group key update timeout

    17.

    DISASSOCIATION_REASON_CODE_4WAY_IE_DIFFERENCE

    Information element in 4-Way Handshake different from Re-associated request/Proberesponse/Beacon

    18.

    DISASSOCIATION_REASON_CODE_MULTICAST_CIPHER_INVALID

    Multicast Cipher is not valid

    19.

    DISASSOCIATION_REASON_CODE_UNICAST_CIPHER_INVALID

    Unicast Cipher is not valid

    20.

    DISASSOCIATION_REASON_CODE_AKMP_NOT_VALID

    AKMP is not valid

    21.

    DISASSOCIATION_REASON_CODE_UNSUPPORTED_RSNE_VERSION

    Unsupported RSN IE version

    22.

    DISASSOCIATION_REASON_CODE_INVALID_RSNE_CAPABILITIES

    Invalid RSN IE Capabilities

    23.

    DISASSOCIATION_REASON_CODE_8021X_AUTHENTICATION_FAILED

    IEEE 802.1X Authentication failed

    44.

    DISASSOCIATION_REASON_CODE_PSP_TX_PKT_BUFFER_EXCEEDED

    Symbol defined (non 802.11 standard) code. The Wireless Switch has exceeded it’s time limit in attempting to deliver buffered PSP frames to the Mobile Unit without receiving a single 802.11 PS Poll or NULL data frame. The Wireless Switch begins the timer when it sets the Mobile Unit’s bit in the TIM section of the 802.11 beacon frame for the BSS. The time limit is at least 15 seconds. The Mobile Unit is probably gone (or may be faulty).

    77.

    DISASSOCIATION_REASON_CODE_TRANSMIT_RETRIES_EXCEEDED

    Symbol defined (non 802.11 standard) codes. The Wireless Switch has exceeded it’s retry limit in attempting to deliver a 802.1x EAP message to the Mobile Unit without receiving a single 802.11 ACK. The retry limit varies according to traffic type but is at least 64 times. The Mobile Unit is either gone or has incorrect 802.1x EAP authentication settings.

     但是依然找不到原因和解决办法,继续研究中。

    用安卓手机或者thinkpad连接,客户端一直在转圈圈无法连接,但是server输出如下log,与iphone连接失败的有所不同。

    [73684.499271] RTL871X: ap recv deauth reason code(3) sta:20:5d:47:63:75:30
    [73684.510355] RTL871X: set pairwise key to hw: alg:0(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:0
    [73699.455878] RTL871X: ap recv deauth reason code(3) sta:20:5d:47:63:75:30
    [73699.466855] RTL871X: set pairwise key to hw: alg:0(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:0
    [73714.509250] RTL871X: ap recv deauth reason code(3) sta:20:5d:47:63:75:30
    [73714.520095] RTL871X: set pairwise key to hw: alg:0(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:0
    [73726.111798] RTL871X: ap recv deauth reason code(3) sta:20:5d:47:63:75:30
    [73726.122729] RTL871X: set pairwise key to hw: alg:0(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:0
    [73732.809624] RTL871X: ap recv deauth reason code(3) sta:20:5d:47:63:75:30
    [73732.820605] RTL871X: set pairwise key to hw: alg:0(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:0

    根据log提示log跟踪驱动源码,看看有什么有用的信息。

    ap recv disassoc reason code(8)

    linux-3.10/drivers/net/wireless/rtl8188eu$ /core/rtw_mlme_ext.c

    unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame)
    {
        unsigned short    reason;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
        u8 *pframe = precv_frame->u.hdr.rx_data;
    #ifdef CONFIG_P2P
        struct wifidirect_info *pwdinfo= &(padapter->wdinfo);
    #endif //CONFIG_P2P
    
        //check A3
        if (!(_rtw_memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN)))
            return _SUCCESS;
    
    #ifdef CONFIG_P2P
        if ( pwdinfo->rx_invitereq_info.scan_op_ch_only )
        {
            _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey );
            _set_timer( &pwdinfo->reset_ch_sitesurvey, 10 );
        }
    #endif //CONFIG_P2P
    
        reason = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN));
    
            DBG_871X("%s Reason code(%d)
    ", __FUNCTION__,reason);
    
        rtw_lock_rx_suspend_timeout(8000);
        
    #ifdef CONFIG_AP_MODE
        if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE)
        {    
            _irqL irqL;
            struct sta_info *psta;
            struct sta_priv *pstapriv = &padapter->stapriv;
            
            //_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);    
            //rtw_free_stainfo(padapter, psta);
            //_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);        
    
            DBG_871X_LEVEL(_drv_always_, "ap recv disassoc reason code(%d) sta:%pM
    ",
                    reason, GetAddr2Ptr(pframe));
    
            psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));    
            if(psta)
            {
                u8 updated = _FALSE;
                
                _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
                if(rtw_is_list_empty(&psta->asoc_list)==_FALSE)
                {
                    rtw_list_delete(&psta->asoc_list);
                    pstapriv->asoc_list_cnt--;
                    updated = ap_free_sta(padapter, psta, _FALSE, reason);
                
                }
                _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
    
                associated_clients_update(padapter, updated);
            }
    
            return _SUCCESS;
        }
        else
    #endif
        {
            DBG_871X_LEVEL(_drv_always_, "sta recv disassoc reason code(%d) sta:%pM
    ",
                    reason, GetAddr3Ptr(pframe));
            
            receive_disconnect(padapter, GetAddr3Ptr(pframe), reason);
        }    
        pmlmepriv->LinkDetectInfo.bBusyTraffic = _FALSE;
        return _SUCCESS;
    
    }
    ap recv deauth reason code(3) 


    unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame)
    {
        unsigned short    reason;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
        u8 *pframe = precv_frame->u.hdr.rx_data;
    #ifdef CONFIG_P2P
        struct wifidirect_info *pwdinfo= &(padapter->wdinfo);
    #endif //CONFIG_P2P
    
        //check A3
        if (!(_rtw_memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN)))
            return _SUCCESS;
    
    #ifdef CONFIG_P2P
        if ( pwdinfo->rx_invitereq_info.scan_op_ch_only )
        {
            _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey );
            _set_timer( &pwdinfo->reset_ch_sitesurvey, 10 );
        }
    #endif //CONFIG_P2P
    
        reason = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN));
    
        DBG_871X("%s Reason code(%d)
    ", __FUNCTION__,reason);
    
        rtw_lock_rx_suspend_timeout(8000);
    
    #ifdef CONFIG_AP_MODE
        if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE)
        {        
            _irqL irqL;
            struct sta_info *psta;
            struct sta_priv *pstapriv = &padapter->stapriv;
            
            //_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);        
            //rtw_free_stainfo(padapter, psta);
            //_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);        
    
            DBG_871X_LEVEL(_drv_always_, "ap recv deauth reason code(%d) sta:%pM
    ",
                           reason, GetAddr2Ptr(pframe));
    
            psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));    
            if(psta)
            {
                u8 updated = _FALSE;
            
                _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
                if(rtw_is_list_empty(&psta->asoc_list)==_FALSE)
                {            
                    rtw_list_delete(&psta->asoc_list);
                    pstapriv->asoc_list_cnt--;
                    updated = ap_free_sta(padapter, psta, _FALSE, reason);
    
                }
                _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
    
                associated_clients_update(padapter, updated);
            }
            
    
            return _SUCCESS;
        }
        else
    #endif
        {
            int    ignore_received_deauth = 0;
    
            //    Commented by Albert 20130604
            //    Before sending the auth frame to start the STA/GC mode connection with AP/GO, 
            //    we will send the deauth first.
            //    However, the Win8.1 with BRCM Wi-Fi will send the deauth with reason code 6 to us after receieving our deauth.
            //    Added the following code to avoid this case.
            if ( ( pmlmeinfo->state & WIFI_FW_AUTH_STATE ) ||
                ( pmlmeinfo->state & WIFI_FW_ASSOC_STATE ) )
            {
                if ( reason == WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA )
                {
                    ignore_received_deauth = 1;
                } else if (WLAN_REASON_PREV_AUTH_NOT_VALID == reason) {
                    // TODO: 802.11r
                    ignore_received_deauth = 1;
                }
            }
    
            DBG_871X_LEVEL(_drv_always_, "sta recv deauth reason code(%d) sta:%pM, ignore = %d
    ",
                           reason, GetAddr3Ptr(pframe), ignore_received_deauth);
            
            if ( 0 == ignore_received_deauth )
            {
                receive_disconnect(padapter, GetAddr3Ptr(pframe) ,reason);
            }
        }    
        pmlmepriv->LinkDetectInfo.bBusyTraffic = _FALSE;
        return _SUCCESS;
    
    }

    现在一个reason code(3) 解释是Deauthenticated because sending station has left or is leaving IBSS or ESS

    reason code(8) 解释是Disassociated because sending station has left or is leaving BSS

    百度来百度去一个星期没找到靠谱有用的信息,周末把apn访问的弄好了,于是google了一下,果断找到了同病相怜之人

    https://github.com/lwfinger/rtl8723bu/issues/26

    按照Mh6的说法首更换hostapd版本,重新编译打包,然后修改hostapd.conf配置文件。

     driver=rtl871xdrv

    改为

    driver=nl80211

    (事实上之前更改过这个driver验证但是因为旧版本的hostapd不支持这个驱动的加载,所以放弃了。)

    重新启动后貌似看到了新的希望,但是又出现了新的问题

    random种子不够

    Using interface wlan0 with hwaddr 28:f3:66:8d:f8:07 and ssid 'carwifi'
    random: Only 11/20 bytes of strong random data available from /dev/random
    random: Not enough entropy pool available for secure operations
    WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
    Internet Systems Consortium DHCP Server 4.1.1-P1
    Copyright 2004-2010 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/
    Wrote 0 leases to leases file.
    Listening on LPF/wlan0/28:f3:66:8d:f8:07/192.168.1.0/24
    Sending on   LPF/wlan0/28:f3:66:8d:f8:07/192.168.1.0/24
    Sending on   Socket/fallback/fallback-net
    [root@t3_p3 ~]# cat /proc/sys/kernel/random/entropy_avail 
    129

    这个数值太小了,参考网上的说法至少要大于1000才能满足。

    切换到 /dev/urandom

    mv /dev/random /dev/random.orig
    ln -s /dev/urandom /dev/random

     But  解决了随机数的问题,然并卵,wifi还是连不上,一样报错,无可救药。。。

    ============================

    更新hostapd.conf

    ##### hostapd configuration file ##############################################
    
    interface=wlan0
    driver=nl80211
    ctrl_interface=/var/run/hostapd
    channel=9
    ieee80211n=1
    hw_mode=g
    ignore_broadcast_ssid=0
    wpa=2
    rsn_pairwise=CCMP
    ssid=test_ap
    wpa_passphrase=12345678
  • 相关阅读:
    Sentinel实现熔断和限流
    Nacos 服务注册和配置中心
    SpringCloud Sleuth 分布式请求链路跟踪
    SpringCloud Stream消息驱动
    SpringCloud Bus消息总线
    SpringCloud Config分布式配置中心
    Geteway服务网关
    Hystrix断路器
    libecc:一个可移植的椭圆曲线密码学库
    第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗?
  • 原文地址:https://www.cnblogs.com/tid-think/p/9110620.html
Copyright © 2020-2023  润新知