V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
seeker
V2EX  ›  问与答

有没有这么一种加密算法? A 给 B, C, D(, F, G ...) 发加密信息,信息只有 B, C, D(, F, G ...) 能解密

  •  
  •   seeker · 2018-02-22 00:28:49 +08:00 · 2823 次点击
    这是一个创建于 2501 天前的主题,其中的信息可能已经有所发展或是发生改变。
    A 给 B, C, D(, F, G ...) 发信息,希望信息只有 B, C, D(, F, G ...) 能解密。在不需要分别加密的情况下。
    A 知道 B, C, D(, F, G ...) 的公钥。
    第 1 条附言  ·  2018-02-22 22:02:25 +08:00
    谢谢大家。
    补充一下我没有表述清楚的部分。
    我其实在想即时通信(有留言功能),或者邮件通信的场景。A 需要给不确定人数的人发信息,如果要做到客户端加密,应该如何实践。
    18 条回复    2018-02-23 05:42:19 +08:00
    ysc3839
        1
    ysc3839  
       2018-02-22 00:33:41 +08:00   ❤️ 2
    以我知道的知识,“不需要分别加密”没法实现。也许你可以这样,信息本身用对称加密算法加密,然后分别非对称加密密钥。
    swulling
        2
    swulling  
       2018-02-22 01:20:52 +08:00 via iPhone
    用公钥加密后,拼成一个大信息。。。这样每个人解密出来的都是一段乱码中有信息


    而且也不算分别加密
    ryd994
        3
    ryd994  
       2018-02-22 02:36:22 +08:00 via Android
    或者让他们共享私钥啊
    虽然这是很恶劣的做法
    Librazy
        4
    Librazy  
       2018-02-22 02:50:01 +08:00 via Android   ❤️ 2
    用对称密钥加密明文,用每个人的公钥加密对称密钥
    shiyouming91
        5
    shiyouming91  
       2018-02-22 03:01:59 +08:00 via iPhone
    CMS 了解一下
    Bryan0Z
        6
    Bryan0Z  
       2018-02-22 03:53:40 +08:00 via Android   ❤️ 1
    group signature 应该可以,A 拿着公钥加密,剩下的每个人拿着不一样的私钥
    we000
        7
    we000  
       2018-02-22 07:30:45 +08:00 via Android
    其实都是分别加密,例如用 PGP 加密发邮件给多个收件人
    xwyam
        8
    xwyam  
       2018-02-22 07:51:36 +08:00 via Android   ❤️ 1
    群签名反着用?
    datocp
        9
    datocp  
       2018-02-22 08:03:32 +08:00 via Android
    https://www.stunnel.org/auth.html

    stunnel 有链路加密,客户端有 ca 用来认证服务器身份,服务器同样可以验证客户端身份已经是最安全的防范中间人通讯实现。
    xlrtx
        10
    xlrtx  
       2018-02-22 11:58:31 +08:00
    任意一个对等加密方法都可以实现题主的需求啊

    c = f(m, k)
    m = f'(c, k)

    在 B, C, D(, F, G ...)有秘钥(k)的情况下
    A 给 B, C, D(, F, G ...) 发加密信息(c), 信息(c)只有 B, C, D(, F, G ...) 能解密, 也不需要分别加密.
    Hardrain
        11
    Hardrain  
       2018-02-22 12:02:15 +08:00
    DH 算法可以多人使用(最后协商出来的 common secret 是 g^(abcdef) mod p)
    对其中任何一个公钥(g^N mod p)签名即防止中间人攻击
    Hardrain
        12
    Hardrain  
       2018-02-22 12:03:57 +08:00
    @Hardrain 假设 A 有一个 RSA 公钥,BCDEF ……都有 A 的公钥
    使用 DH(E)算法,A 用公钥对自己的 DH 公钥签名,将签名和 DH 公钥分发给 BCDEF ……,后者各自提供自己的公钥。
    chinvo
        13
    chinvo  
       2018-02-22 12:08:04 +08:00
    KDM 了解一下
    seeker
        14
    seeker  
    OP
       2018-02-22 21:38:59 +08:00
    @Bryan0Z group signature 好像是说一个组内每人都可以以组的名义签名,不是用来加密的?
    seeker
        15
    seeker  
    OP
       2018-02-22 21:42:56 +08:00
    @shiyouming91 CMS 似乎范围太广了一点
    seeker
        16
    seeker  
    OP
       2018-02-22 21:46:20 +08:00
    @Bryan0Z (无视我上一条回复)看起来可以。只是这样的 group 是确定人数的,修改必须 group manager 修改。
    inflationaaron
        17
    inflationaaron  
       2018-02-23 00:06:55 +08:00   ❤️ 1
    Bryan0Z
        18
    Bryan0Z  
       2018-02-23 05:42:19 +08:00 via Android
    @seeker 看了眼你的需求,17 楼答案更合适
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:30 · PVG 10:30 · LAX 18:30 · JFK 21:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.