Difference between PGP and GPG

1,639

Solution 1

PGP can refer to two things:

  1. The Pretty Good Privacy software originally written by Phil Zimmermann, and now owned by Symantec.
  2. The formats for keys, encrypted messages and message signatures defined by that software. These have now been formalised as the OpenPGP standard.

The GNU Privacy Guard (GPG) software is an independent implementation of the OpenPGP standards, so you can use it to exchange encrypted messages with people using other OpenPGP implementations (e.g. Symantec's PGP).

Due to its popularity on Linux systems, it is also fairly common for people to incorrectly use the term "GPG" to refer to the whole OpenPGP cryptography system (e.g. "GPG keys" or "GPG signatures"). It is usually pretty clear what they mean from the context though.

Solution 2

“PGP” stands for “Pretty Good Privacy.” It was developed by Phil Zimmermann. At first it was written as copyrighted freeware under the Gnu Public License. Later, PGP was upgraded and made into a propriety program. The rights for this program are traded around. The reason for this upgrade was legal defense costs and royalty issues related to the export laws of the USA. Now the PGP program is owned by PGP Corporation.

Only the command line version is not owned by PGP Corporation which is also not for sale. PGP uses the RSA algorithm and the IDEA encryption algorithm. The PGP is considered to have Windows interface which is more polished

“GPG” stands for “Gnu Privacy Guard.” GPG is a re-write or upgrade of PGP. It does not use the IDEA encryption algorithm. This is to make it completely free. It uses the NIST AES, Advanced Encryption Standard. All the algorithm data is stored and documented publicly by OpenPGP Alliance. The main reason for this change is that AES costs less than IDEA and is considered more secure. Moreover, it is royalty free because it is not patented. GPG is more compatible than the original PGP with OpenPGP. GPG is also based on a command line. Windows frontends are also available for GPG other than the command line.

Solution 3

Gnu Privacy Guard and Pretty Good Privacy -- also referred to as GPG and PGP, respectively -- are data encryption and decryption solutions used for transferring and storing information securely. GPG and PGP are nearly identical, with the major difference between them being how they are licensed to the public.

Read more: The Difference Between GPG and PGP | eHow.com http://www.ehow.com/info_12225332_difference-between-gpg-pgp.html#ixzz26DXDNpJy

Share:
1,639

Related videos on Youtube

Kevin Fegan
Author by

Kevin Fegan

Updated on September 18, 2022

Comments

  • Kevin Fegan
    Kevin Fegan over 1 year

    I want to create a script (JavaScript) to enumerate through all "radio" elements searching for those that have an "ID" (or perhaps "Name" and "Value") that matches some regexs. If there is a match, I'll execute additional code depending on which regex matched. Searching by "ID" should be easier than searching by "Name" and "Value", but in some cases the elements don't have an "ID", so in those cases, I'd search for a regex match by "Name" and "Value".

    Here are some typical sets of "radio" elements:

    <span>
    <input id="ABC123" onclick="somefunction('DEF');" name="GHI" value="JKL45" type="radio">
    <input id="MNO678" onclick="somefunction('PQR');" name="GHI" value="STU90" type="radio">
    </span>
    
    <span>
    <input name="GHI" value="JKL45" type="radio">
    <input name="GHI" value="STU90" type="radio">
    </span>
    

    I have most of the JavaScript worked out below. This script will be saved as the "URL" of a web-browser shortcut (bookmark/favorite). This is generally referred to as a "Bookmarklet" (or "Favlet" for IE).

    Here's what I have so far:

    javascript: 
    (function(){ 
      function dorado(rado){ 
        /* 
        Here I want to test if the value of the "ID" for 
        the element "rado" matches any 1 of 2-or-3 different 
        regex's. If there is no "ID" then I'd test "Name" and "Value" 
    
        If none of the regex's match, I'll return. 
        Otherwise, I'll execute additional code depending on which regex matched. 
        */ 
      } 
      var x,k,f,j; 
      x=document.forms; 
      for (k=0; k<x.length; ++k) { 
        f=x[k]; 
        for (j=0;j<f.length;++j) 
    // call dorado() only for "radio" elements. 
          if (f[j].type.toLowerCase() == "radio") 
            dorado(f[j]); 
      } 
    } 
    )(); 
    




    Edited: 9/11/2013 5:48 PM (CT), additional details provided.

    A little clarification... "radio-id" attribute should uniquely identify each "<input" element on the page of type "radio". In some cases, an "<input" element may not have its "ID" attribute set. In those cases, I have to inspect "radio-name" and "radio-value", together, because "radio-name" will not uniquely identify each radio element in cases where radio buttons are grouped together for selection as "1 of many" ("radio-name" will usually be the same for all grouped radio elements), and "radio-value" may be the same for many radio elements on the page.

    So, as I am inspecting each "radio" element (in a loop), I first need to determine if the "radio-id" attribute is set.

    If the "radio-id" attribute is set, I'll need to test if the "ID" matches any 1 of 2-or-3 different regex expressions. If nothing matches, I'll just "return". Otherwise, I'll execute additional code depending on which regex matched.

    Likewise, if the "radio-id" attribute is NOT set, I'll need to test if the "name" and "value" matches any 1 of 2-or-3 different regex expressions. If nothing matches, I'll just "return". Otherwise, I'll execute additional code depending on which regex matched. For the purpose of the regex, the "name" and "value" could be tested together by combining them something like this:

    radioName =  /* name attribute of element */;  
    radioValue = /* value attribute of element */;  
    teststr = radioName . ":" . radioValue;  
    

    It would probably be easiest to pre-define the regex expression strings like:

    var IDregexlist=new Array("/test1/","/test2/","/test3/"); /* example: "/ABC[0-9]+/", "/MNO[0-9]+/" ... */  
    var NVregexlist=new Array("/test4/","/test5/","/test6/"); /* example: "/GHI:JKL[0-9]+/", "/GHI:STU[0-9]+/" ... */  
    

    then in the dorado function, test for regex match of each item in the arrays like:

    for each (rexpr in IDregexlist) {... };
    

    I shouldn't have a problem with the bulk of the JavaScript code, except I need to know, within the function dorado(rado){ ... }:

    1. How to get the "ID, "name" and "value" of the element (would this just be "rado.id", "rado.name", and "rado.value"?)
    2. how to do the regex match tests and how to tell if an expression matched.
    • thgaskell
      thgaskell over 10 years
      Could you give an example of the regex you're trying to match?
    • Kevin Fegan
      Kevin Fegan over 10 years
      @thgaskell - It would be something like a fixed string followed by an underscore followed by some numbers, so the regex search expression would be something like /ABC_[0-9]+/.
  • Keith Thompson
    Keith Thompson over 11 years
    Are you sure the original version was GPL? The Wikipedia article just says that "No license was required for its non-commercial use".
  • James Henstridge
    James Henstridge over 11 years
    I'm pretty sure it wasn't ever GPL: if it was, there wouldn't have been a need for GPG to be a clean room implementation.
  • Kevin Fegan
    Kevin Fegan over 10 years
    Thanks for taking the time to provide your answer. This is a little more advanced than I can wrap my newbie brain around. In the line: "radios.forEach(function(radio) {", where does "function(radio)" come from. Also, in "function doRado(radio) {", I assume "radio.id" returns the ID attribute of the radio element.
  • c.P.u1
    c.P.u1 over 10 years
    The entire statement radios.forEach... is similar to using a for loop. In each iteration forEach assigns the radio parameter to the current array element (radios[0], radios[1],..., radios[i]). Yes, radio.id, radio.name correspond to the radio button's attributes. The radios array contains all <input type="radio"/> elements, so radio in function doRado() refers to one of those elements. In fact, the entire iteration part is similar to yours, you can substitute your dorado with doRado
  • Kevin Fegan
    Kevin Fegan over 10 years
    In line "radios.forEach(function(radio) {...", your use of "function('object')" confuses me. Is "function('object')" just a "Template" to define the name of the (forEach) variable used in the function inside the "{}"? Could "radios.forEach(function(radio) {..." be rewritten as: "for each (radio in radios) {doRado(radio);}"? (I also edited my question to provide additional details).
  • vcardillo
    vcardillo over 7 years
    "GPG is a re-write or upgrade of PGP." That's false. GPG is an implementation of OpenPGP.
  • darryn.ten
    darryn.ten over 6 years
    Link is broken.
  • Ilja
    Ilja over 6 years
    I was confused by github using the term GPG key ... so this is wrong technically? You reassure me that my understanding was correct, thanks :)
  • mateuscb
    mateuscb over 5 years
    The downside of links. Thankfully: archive.org
  • Elijah Lynn
    Elijah Lynn about 5 years
    This answer could be improved by being more clear about the term "GPG Keys" being the incorrect or correct usage.
  • AkaZecik
    AkaZecik almost 5 years
    Are you the author of this article? Your answer contains a word-for-word portion of that article and the article was written before your answer was.