مبناي كار امضاي ديجيتال بر اساس رمزهاي نا متقارنه كه داراي كليد عمومي و خصوصي هستند .. و ساختار به اين صورته كه كسي كه فقط كليد عمومي رو داشته باشه نمي تونه به كليد خصوصي پي ببره
شخص امضا كننده، كليد عمومي و خصوصي رو داره .. و كليد عمومي اين شخص در اختيار همگان هست (از طريق ca ها و گواهينامه ها و ليست هاي معتبر) .. نكته ديگه اينكه وقتي متني با كليد خصوصي رمز شده باشه و با اعمال كليد عمومي مي شه متن اصلي رو بدست آورد .. حالا نحوه امضا
وقتي يه متني رو براي كسي مي فرستي و مي خواي امضاش كني يه digest از اون متن رو توسط يكي از توابع هش (مثلا md5) تهيه مي كني .. يعني يه چكيده از متن .. هش مثل روشهاي رمزنگاري نيست يعني تو با داشتن يه مقدار هش نمي توني به اصل متن برسي .. اما اگر همون تابع هش رو روي متن اوليه اجرا كني به همون digest اي مي رسي كه نفر قبلي رسيده .. پس كاملا يه طرفست
پس متن مورد نظر رو كه به طور كامل مي فرستي .. هش اين متن رو با كليد خصوصي خودت رمز مي كني (اين امضاته)
بعد شخصي كه متن تو رو گرفته هش متنتو پيدا مي كنه .. رو امضات كليد عمومي خودتو اعمال مي كنه تا اصل هشي كه تو از متن فرستاده بودي رو به دست بياره .. اونوقت دو تا هش مذكور رو با هم قياس مي كنه اگر با هم برابر باشند معنيش اينه كه متن رو خودت فرستادي و كاملاً صحيحه اما اگر برابر نباشه معنيش اينه كه با پيغام صدمه ديده يا اينكه كسي اين وسط خواسته پيغامتو جعل كنه ..
به همين سادگي