`

SmartCardPKI

阅读更多

原文 http://code.google.com/p/seek-for-android/wiki/SmartCardPKI

 

SmartCardPKI  

Add smart card based PKI functionality

1 Introduction

1.1 Smart Card based PKI (Public Key Infrastructure)

PKI is the common way to authenticate a message sender or to encrypt/decrypt messages in a secure way. It is typically used by eMails (S/MIME), data encryption and secure authentication (VPN, SSL/TLS). It is based on public/private keys (typically RSA) and certificates, which bind a user identity to a public key.

PKI is based on the secrecy of the private key, so the private key is often stored on a smart card, where the smart card performs the cryptographic operations to avoid the risk that the private key can become public or copied in any way.

The most common API to access cryptographic smart card functions is the PKCS#11 interface, published by RSA Labs . It is used in Mozilla Firefox, Thunderbird and many other applications, e.g. PGP. Corresponding to the PKCS#11 interface, the PKCS#15 specification defines a file structure and description syntax for keys and certificates on the smart card.

1.2 OpenSC

OpenSC is a widely-used Open Source development, which provides a set of libraries and tools for accessing smart cards for management and cryptographic operations. It provides a PKCS#11 interface and already supports smart cards from different vendors. OpenSC provides smart card access according to the PKCS#15 standard. A good overview about OpenSC can be found here

1.3 Muscle Card Applet

The Muscle Card Applet is an Open Source Java Card applet, originally developed by the M.U.S.C.L.E project The Muscle Card applet can be loaded on smart cards with Java Card OS and allow to securely store keys and other objects, (e.g. certificates) on the smart card and use them for cryptographic functionality, like signature generation or decryption with RSA keys. The Muscle Card Applet is supported by OpenSC (http://www.opensc-project.org/opensc/wiki/MuscleApplet )

To provide PKI functionality on the Android OS, we use OpenSC with modifications for the Android platform. To store cryptographic keys on the smart card and perform cryptographic operations, we use the Muscle Card Applet for smart cards with Java Card OS.

2 Add PKI support with OpenSC to Android

2.1 Prerequisites

  • Android 2.2 (froyo) sources with smart card related patches (see Building the system )
  • Secure Element with Java Card OS in microSD format (e.g. G&D Mobile Security Card ), for using it on a real hardware device.
  • Tool to load a Java Card applet onto the Secure Element (e.g. G&D JLoad for G&D Mobile Security Card )

From the download page get:


The system environment for porting the PKI functionality to the Android 2.2 (froyo) was an Ubuntu 10.04 with gcc 4.4.3.
As Secure Element a G&D Mobile Security Card and for loading the Java card applet, the G&D JLoad was used, provided within the G&D Mobile Security Developers Kit https://www.cardsolutions-shop.com/shop/gi-de/ .
As phone, there was a HTC Magic (Sapphire) used.

2.2 Add OpenSC to the froyo sources

To add the support for OpenSC to your froyo sources, you need to build your system with smart card support according to the description Building the system and additionally add the patches for OpenSC to your sources.

After you performed the step "Patching the source" as described in Building the system add the patches for OpenSC.

Apply the patches for OpenSC in the root directory of the froyo source then continue to build your system as described in Building the system

$ tar xvzf  external_opensc
.
tar
.
gz
$ patch 
-
p1 
<
 
<path_to_patch>
/
opensc_android
.
patch

Once the system was built successfully and flashed to the phone, there will be additional components available:

directory
:
 
/system/
bin
 opensc
-
tool 
(
command line utility 
for
 smart card operations
,
 e
.
g
.
 sending commands
)

 pkcs15
-
init 
(
command line utility to initialise a smart card 
with
 the PKCS
#15 structure)

 pkcs15
-
tool 
(
command line utility to explore
/
access PKCS
#15 file structure)

 pkcs11
-
tool 
(
command line utlity to access smart cards 
using
 a PKCS
#11 library, e.g. to perform a signature)
directory
:
 
/system/
lib
 opensc
-
pkcs11
.
so  
(
PKCS
#11 library)

 pkcs11
-
spy
.
so  
(
dummy PKCS
#11 library, when used, it logs all calls to the PKS#11 library for debugging purposes)
directory
:
 
/
etc
 opensc
.
conf  
(
OpenSC
 config file
)

 pkcs15
.
profile  
(.
profile files contain information about the file structure to create during initialisation of the smart card
)

 jcop
.
profile
 muscle
.
profile
 oberthur
.
profile
 cyberflex
.
profile

2.3 Load the Muscle Java Card Applet onto the smart card

Unpack the package containing the Muscle Card Applet.

tar xvzf 
MCardApplet
-
0912.tar
.
gz

The package contains the Muscle Java Card Applet 0.9.12, which consist of the sources of 0.9.11 and the Ant script from version 0.9.12 for easy compile and convert it. There is already a compiled and converted cap file added to the package, which can be directly loaded onto a smart card with Java Card OS. It is located in the following directory:

/MCardApplet/
GD
/
com
/
musclecard
/
CardEdge
/
javacard
/
CardEdge
.
cap

The Java card applet was converted using the Sun Java Card Development Kit 2.2.1, so there is no need to perform the compilation and conversion for the Muscle Java Card applet. Nevertheless it is possible to perform this steps, therefore a Sun JDK and the Sun Java Card Development Kit is required. If you compile and convert the Muscle Java Card Applet, you need to download the Sun Java Card Development Kit 2.2.1 from the internet (due to licensing conditions it is not included) and copy it to the directory /MCardApplet/depends/jc221 ). Then you can perform the compile/convert process for the applet by running Ant : ant <target> (e.g. "ant GD" ). The process is also described in the INSTALL file included in the package.

For loading the cap-File CardEdge.cap onto the smart card you need to use an appropriate tool, which is typically provided from the manufacturer of the smart card (e.g. G&D JLoad for the G&D Mobile Security Card ).

2.4 Use OpenSC on the phone

Once you have flashed your phone with the modified sources and inserted the secure element (e.g. G&D Mobile Security Card) in the device, the first step is to intialise the applet and the PKCS#15 structure on the applet, which sets the initial PIN values and creates all the data structures required.

Additionally there are further examples shown, how to use some of the functionality of the OpenSC Tools (e.g, import keys/certificates, create signature, logging of PKCS#11 calls). For a description of OpenSC Tools and its parameters refer to the OpenSC project http://www.opensc-project.org/opensc Calling the commandline tools without a parameter shows the parameters available.

2.4.1 Initialise Muscle Card Applet

To initialise the Muscle Card Applet there is required to send a proprietary command, setting the initial PIN values. Therefore you need to connect your Android phone to the computer and open a connection to the device with the Android adb tool. Then you can use the OpenSC opensc-tool utility to perform the initialisation of the JavaCard Applet.

$ adb shell

# cd /system/bin


# opensc-tool -s 00:A4:04:00:06:A0:00:00:00:01:01 -s B0:2A:00:00:38:08:4D:75:73:63:6C:65:30:30:10:10:08:31:32:33:34:35:36:37:38:08:31:32:33:34:35:36:37:38:10:10:08:31:32:33:34:35:36:37:38:08:31:32:33:34:35:36:37:38:00:00:10:00:00:00:00

The initial values of all PINs/passwords are set to "12345678"

A description of the initialisation command can be found here: http://www.opensc-project.org/opensc/wiki/MuscleApplet

2.4.2 Create PKCS#15 structure

To create the PKCS#15 structure on the smart card use the pkcs15-tool

# pkcs15-init -r 0 -C

During initalisation process you will be asked to enter the values for PINs/passwords. Further information to the pkcs15-init tool can be found here: CardPersonalisation

2.4.3 Dump PKCS#15 content on the card.

The pkcs15-tool allows to show the PKCS#15 content stored on the smart card. The content of the smart card can be listet by using the following command:

# pkcs15-tool --dump

2.4.4 Import a RSA key and certificate.

One way to put a key and certificate onto the smart card, is to import it from an encrypted PKCS#12 container. A sample PKCS#12 container file can be downloaded here: azur1024bit_password_12345678.pfx It contains a 1024 bit RSA key and a corresponding certificate for a dummy user named "azur". To import it into the smart card, you need to copy the file to the phone by using the adb push command. then you can import it with the pkcs15-init utility. The import process requires you to enter the password of the container file, which is "12345678" and the password of the smartcard you set during intialisation.

$ adb push azur1024bit_password_12345678
.
pfx 
/
data
$ adb shell

# cd /system/bin


# pkcs15-init -S /data/azur1024bit_password_12345678.pfx -f PKCS12 -a FF -i 10

2.4.5 Dump smart card content

After successful import of the key and certificate you can see the new objects by dumping the content of the smart card

# pkcs15-tool --dump

2.4.6 Perform a signature using the PKCS#11 library.

With the pkcs11-tool it is possible to perform cryptographic operations with the PKCS#11 library opensc-pkcs11.so . The PKCS#11 library is the standard interface typically used by applications (e.g. Firefox) to perform PKI functionality. Here we use the pkcs11-tool to generate a digital signature for a file. The signature is created by the smart card with the private key stored onto it.

Here we compute the digital signature for the file azur1024bit_password_12345678.pfx , but we can use any other file also. The result is stored in the output file. The output file created has a length of 128 Bytes and contains the digital signature computed by the smart card. (The signature has the same length as the Private key on the smart card, which is 1024 bit). As signature algorithm we use the SHA1-RSA-PKCS, which performs both, a SHA-1 hash and signature according to the RSA algorithm in one step.

# pkcs11-tool --sign --slot 0 -m SHA1-RSA-PKCS --input-file /data/azur1024bit_password_12345678.pfx --output-file /data/signature

2.4.7 Logging the PKCS#11 calls

To see the PKCS#11 calls sent to the PKCS#11 library it is possible to load the pkcs11-spy.so libary and log the calls before forwarding it to the real PKCS#11 library opensc-pkcs11.so .

In this example we call the digital signature operation as described before, but we explicitely load the pkcs11-spy.so library to log the PKCS#11 calls. With the environment variable PKCS11SPY we advise the pkcs11-spy.so library to forward the calls to the real PKCS#11 library opensc-pkcs11.so . This will display all the PKCS#11 calls including sensitive information like PIN values entered. This is useful for debugging with applications using the PKCS#11 interface.

# PKCS11SPY=/system/lib/opensc-pkcs11.so ./pkcs11-tool --module /system/lib/pkcs11-spy.so ./pkcs11-tool --sign --slot 0 -m SHA1-RSA-PKCS --input-file /data/azur1024bit_password_12345678.pfx --output-file /data/signature

3 Future Perspective

Standard PKCS#11 interface with smart card access is one step to standard PKI infrastructure on Android. It requires also standard applications, e.g. Browsers, eMail-Clients supporting this interface on Android.

Other PKI Open Source projects/developments that should be investigated:

  • Firefox Browser for Android / "fennec" Project. Is there PKCS#11 Support like in Firefox available ?
  • Java Interface/Wrapper for access of PKI functionality from Java Applications (e.g IAIK PKC#11 Wrapper).
分享到:
评论

相关推荐

    pendulum-2.1.2-cp39-cp39-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    Nginx配置文件中FastCGI相关参数理解

    Nginx配置文件中FastCGI相关参数理解

    Pillow-8.4.0-cp310-cp310-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    yolo算法-刹车灯探测器数据集-1070张图像带标签-交通信号灯.zip

    yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

    pocketsphinx-0.1.15-cp36-cp36m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    NI-VISA资源安装包

    Windows下2024Q4版本

    【java毕业设计】网上电子书店源码(ssm+mysql+说明文档+LW).zip

    功能说明: (a) 管理员;管理员使用本系统涉到的功能主要有主页、个人中心、用户管理、一级分类管理、二级分类管理、电子书管理、下单购买管理、我的书籍管理、留言反馈、系统管理等功能。 (b) 用户;用户进入系统可以实现首页、电子书、通知公告、留言反馈、个人中心、后台管理、在线客服等,登录注册后可以对主页、个人中心、下单购买管理、我的书籍管理、留言反馈等功能进行详细操作。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

    【java毕业设计】网上点餐系统源码(ssm+mysql+说明文档).zip

    环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

    pocketsphinx-0.1.15-cp39-cp39-win_amd64.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    cn-visual-studio-2010-ultimate-x86-dvd-532347.z01

    cn-visual-studio-2010-ultimate-x86-dvd-532347.z01

    智慧城市照明智能管理系统解决方案PPT(27页).pptx

    城市运行管理的重要性与挑战 城市运行体系是以人为本的服务和经济发展体系,涉及决策、管理和执行三个层次。当前城市运行管理面临城市化快速发展、资源环境制约和社会矛盾突出等挑战。信息技术的发展为城市运行管理提供了重要手段,城市信息化经历了数字化、智能化到智慧化的发展过程。我国城市信息化虽取得进展,但仍处于初级阶段,存在缺乏整体规划、资源浪费和协作效率不高等问题。 智慧城市综合运行管理解决方案 智慧城市运行管理中心(SCOC)是支撑城市运行综合管理的神经中枢,旨在掌控城市运行综合体征,促进服务型政府转型。该中心通过全面整合运行资源,服务城市未来发展,提升城市运行水平和突发事件处置效率。中心纵向提升综合职能,横向贯通专业分工,包括综合管理平台、专业管理平台和业务操作平台,覆盖城市交通、公共安全、生态环境等多个领域。 智慧城市综合运行管理平台的结构与功能 智慧城市综合运行管理平台包括决策支持系统、处置系统、基础设施和监测系统。平台通过综合展现系统、综合应急指挥系统、综合运行业务联动系统等,实现城市运行的综合监测和管理。物联网数据采集系统利用网络通讯技术,实现城市物联网设备的高效运行。平台还包含云计算业务支撑系统、城市基础数据库、视频图像云平台等,以支持城市运行管理的各个方面。 智慧城市综合运行管理解决方案的优势 该解决方案具有三个核心优势:首先,它提供了完整的智慧城市视角,不仅仅是指挥中心或数据中心,而是智慧城市的实际载体。其次,它建立了完整的城市运行联动体系,打通业务部门壁垒,形成有机融合的业务联动平台,提升业务处理效率和服务水平。最后,方案凝聚了多年智慧城市建设咨询经验,为城市运行管理提供了成熟的解决方案。 项目实施建议 智慧城市运行管理中心的建设思路和项目实施建议是方案的重要组成部分,旨在指导城市如何有效实施智慧城市运行管理解决方案,以应对城市运行管理的挑战,提升城市管理的智能化和效率。通过这些建议,城市能够更好地规划和实施智慧城市项目,实现可持续发展。

    persistent-4.9.0-cp39-cp39-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    pocketsphinx-0.1.15-cp27-cp27m-win_amd64.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    域外渗透域内思路:使用工具与技术进行域内侦察与暴力破解

    内容概要:本文介绍了一种通过域外渗透手段进入域内网络的技术思路。主要内容涵盖了使用VPN拨入内网,利用nbt.exe、ladon.exe、nmap等工具进行网络扫描,查找域控制器,以及使用bash和PowerShell脚本进行域用户口令暴力破解的方法。同时介绍了几种常用工具如ldapsearch、PowerView和PingCastle的使用方法,以及它们在获取域内信息方面的具体应用场景。 适合人群:网络安全专业人员、红队成员、渗透测试工程师等从事信息安全相关工作的技术人员。 使用场景及目标:帮助安全专家在进行渗透测试时有效地获取域内网络的关键信息,评估域的安全性,识别潜在的安全漏洞,并提出改进建议。 其他说明:文章提供了详细的命令示例和配置指南,适用于Windows和Linux环境,同时也提到了一些需要注意的安全事项,如防止触发安全警报等。

    Vue搭建AudioPlaySation(三)

    Vue搭建AudioPlaySation(三)

    yolo算法-石头剪刀数据集-7331张图像带标签.zip

    yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

    psf-2021.6.6-cp37-cp37m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    【java毕业设计】古诗词数字化平台源码(ssm+mysql+说明文档+LW).zip

    功能说明: 古诗词数字化平台的功能已基本实现,主要实现主页、个人中心、用户管理、诗词信息管理、分类管理、诗人信息管理、个人分享管理、系统管理等功能的操作系统。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上

    YOLO格式下的行人识别数据集

    这个文档中包含了行人数据集约四千张,在train文件中就包含了三千多张数据集。工具是使用了Labelimg进行标注。

    中介与调节效应分析素材-精心整理资料.zip

    中介与调节效应分析素材-精心整理资料.zip

Global site tag (gtag.js) - Google Analytics