常见开源协议大白话说明

GPL:只要你用了任何该协议的库、甚至是一段代码,那么你的整个程序,不管以何种方式链接,都必须全部使用GPL协议、并遵循该协议开源。商业软件公司一般禁用GPL代码,但可以使用GPL的可执行文件和应用程序。

AGPL:即Affero GPL,是GPL的更严格版本。只要你用了任何该协议的库、甚至是一段代码,那么运行时和它相关的所有软件、包括通过网络联系的所有软件,必须全部遵循该协议开源。据律师说,它的要求范围连硬件都包括。所以,一般公司通常禁用任何AGPL代码。

LGPL:就是GPL针对动态链接库放松要求了的版本,即允许非LGPL的代码动态链接到LGPL的模块。注意:不可以静态链接,否则你的代码也必须用LGPL协议开源。

Apache:修改版本必须保持其原始版权声明;修改过的文件要标明改动。

BSD2:修改版本必须保持其原始版权声明。

BSD3:修改版本必须保持其原始版权声明。未经许可不得使用原作者或公司的名字做宣传。

MIT:修改版本必须保持其原始版权声明。

MPL:修改版本必须保持其原始版权声明。如果发布了编译后的可执行文件,那么必须让对方可以取得MPL协议下程序的源码。

MsPL:修改版本必须保持其原始版权声明。注意:不含商标授权。

另外,如果你违反了协议,不要以为改正错误就是好孩子,一旦被起诉,相关代码必须按许可协议的要求开源,不管是价值多少亿的商用软件。当然,如果是皮包公司,不在乎这个。
### 非对称加密原理通俗举例说明 #### 一个现实类比:信箱与钥匙 非对称加密的核心特点是使用**两个不同的密钥**:一个是可以公开的公钥(public key),另一个是必须保密的私钥(private key)。这两个密钥是一对,彼此关联,但无法互相推导[^1]。 可以想象一个带锁的信箱。这个信箱配了两把钥匙:一把是公开的钥匙,任何人都可以用它来锁上信箱;另一把是私有的钥匙,只有信箱的主人拥有,用于打开信箱。如果有人想给你发送一封秘密信件,他们可以用你的公开钥匙将信箱锁上,然后寄给你。只有你拥有私有钥匙,才能打开这个信箱[^3]。 这种方式解决了对称加密中密钥共享的安全问题,因为公钥可以随意分发,即使被截获也不会影响安全性。[^3] #### 技术示例:加密与签名 非对称加密有两种主要用途:**加密**和**签名**。 - **加密过程**:发件人使用收件人的公钥加密数据,只有收件人用自己的私钥才能解密。例如,用户A想给用户B发送一条加密消息,用户A使用用户B的公钥进行加密,加密后的数据只能由用户B的私钥解密[^4]。 - **签名过程**:发送方使用自己的私钥对数据进行加密,接收方使用发送方的公钥进行解密。这个过程不能保证数据的保密性,但可以验证数据来源的合法性,即确认该数据确实来自发送方,且发送方不能否认发送过该数据。 #### 代码示例:使用 Python 的 `cryptography` 库进行 RSA 加密 以下是一个使用 RSA 非对称加密算法的简单示例: ```python from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import hashes, serialization # 生成密钥对 private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) public_key = private_key.public_key() # 序列化公钥 pem_public = public_key.public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo ) # 原始数据 data = b"Secret message: 123456" # 使用公钥加密 encrypted = public_key.encrypt( data, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) print("加密后的数据:", encrypted) # 使用私钥解密 decrypted = private_key.decrypt( encrypted, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) print("解密后的数据:", decrypted) ``` 在这个示例中,使用了 RSA 算法生成密钥对,并通过公钥加密数据,私钥解密数据。这种机制确保了即使公钥被公开,数据仍然只能由私钥持有者解密[^4]。 #### 非对称加密的应用场景 非对称加密虽然安全性高,但计算开销较大,通常不用于加密大量数据。实际应用中,它常用于加密对称加密的密钥,然后使用对称加密进行数据传输。例如 HTTPS 协议中,客户端和服务器先通过非对称加密协商出一个对称密钥,后续通信则使用该对称密钥进行加密,兼顾了安全性和性能[^2]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值